使用多个ProxyPass配置Apache

时间:2017-08-28 07:54:41

标签: apache proxypass

我正在尝试将我的apache服务器配置为代理以提供两个内部服务,一个监听8080并且应该接收特定URL的流量,另一个监听8077并且应该接收所有其他http流量

我在运行这两个服务的同一台服务器上部署并配置了apache,它正在监听443以及所有SSL配置,并且工作正常

我也启用了proxy_module,proxy_http_module和proxy_http2_module

我想要实现的目标

如果请求的网址是/ webhook1 - >将其传递给EP1 http://localhost:8080和 任何其他请求的URL都应传递给EP2 http://localhost:8077

我对第一项服务的当前配置

ProxyPass /webhook1  http://localhost:8080
ProxyPassReverse /webhook1 http://localhost:8080

现在我想将另一个代理传递定义为

ProxyPass /  http://localhost:8077
ProxyPassReverse / http://localhost:8077

将两个配置放在一起是行不通的,感谢您在如何配置apache以实现我的要求方面的帮助

提前谢谢

2 个答案:

答案 0 :(得分:14)

根据需要按正确的顺序放置ProxyPass规则

如果你想评估/ webhook1规则并将其发送到8080,否则将流量发送到8077,规则应按以下顺序

ProxyPass /webhook1  http://localhost:8080
ProxyPassReverse /webhook1 http://localhost:8080
ProxyPass /  http://localhost:8077
ProxyPassReverse / http://localhost:8077

答案 1 :(得分:0)

您可以在/ etc / apache2 / sites-enabled /下编写ssl.conf文件,如下所示: -

RewriteEngine on
ProxyPass /webhook1 http://127.0.0.1:8080/
ProxyPassReverse /webhook1 http://127.0.0.1:8080/
RewriteRule ^/$ /webhook1/ [R,L]

RewriteEngine on
ProxyPass / http://127.0.0.1:8087/
ProxyPassReverse / http://127.0.0.1:8087/
RewriteRule ^/$ /EP2/ [R,L]

如果在apache2中配置了ssl证书,它将自动重定向到HTTPS。