【问题标题】:Configure Apache with multiple ProxyPass使用多个 ProxyPass 配置 Apache
【发布时间】:2018-02-05 10:36:46
【问题描述】:

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

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

我还启用了 proxy_module、proxy_http_module 和 proxy_http2_module

我想要达到的目标

如果请求的 URL 是 /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 以满足我的要求方面的帮助

提前谢谢你

【问题讨论】:

  • 应该可以,如果同时设置两个规则会发生什么?
  • 当我添加第二个代理时,所有流量都转到第二个服务,所以 /webhook1 将被传递到 8077 而不是 8080
  • 我刚刚弄清楚了影响 apache 如何执行它们的代理规则的顺序。我将根规则放在 /webhook1 规则之前,这就是为什么所有流量都流向第二个服务的原因。现在我将 webhook1 规则放在根规则之前,事情开始按预期工作。我不确定是否有更好的方法来配置服务器,但这看起来有点笨拙

标签: apache proxypass


【解决方案1】:

根据需要将 ProxyPass 规则按正确的顺序排列

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

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

【讨论】:

  • 绝妙的答案!!我有一个类似的场景,这完美无缺
  • @KalyanPradhan 很高兴有帮助!
  • Apache 中的哪个文件包含此配置?我使用 Apache 2.2
  • 通常应该在 /conf/httpd.conf 中,即 /etc/httpd/conf/httpd.conf
【解决方案2】:

您可以在 /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。

【讨论】:

  • 我正在尝试重定向到 tomcac (8080) 和 Camunda (9090)。 Tomcat 可以,camunda 不行。欢迎提出任何建议
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
  • 2020-05-25
  • 2011-12-10
  • 2014-11-17
  • 2015-01-19
  • 2013-11-26
  • 1970-01-01
相关资源
最近更新 更多