Apache反向代理配置不起作用

时间:2019-07-13 14:00:10

标签: apache docker httpd.conf mod-proxy

希望您可以帮助解决此问题。对于某些需要PHP 5.6和PHP 7.1的家庭应用程序,我在这里有一个独特的架构(也许不是,但对我而言是唯一的)。这是/ r / docker向我推荐的架构:

  • 一个充当Apache反向代理的容器,该容器将在端口80上接收DNS请求,然后将其传递到以下容器的端口之一。
  • 一个运行带有PHP 5.6的Apache的容器,侦听端口8081。
  • 一个运行带有PHP 7.1的Apache的容器,侦听端口8080。

我已经能够通过在/ etc / apache2 / sites-available中设置以下domainname.com.conf来使domainname.com如此工作:

<VirtualHost *:80>

ServerName domainname.com

<Proxy *>

Allow from localhost

</Proxy>

ProxyPass "/" "http://public.ip.address:8080/" retry=0
ProxyPreserveHost On

</VirtualHost>

但是,我的一个子域需要推送到PHP 5.6端的应用程序。所以我已经设置了这个subdomain.domainname.com.conf:

<VirtualHost *:80>

ServerName subdomain.domainname.com

<Proxy *>

Allow from localhost

</Proxy>

ProxyPass "/" "http://public.ip.address:8081/subdomain/" retry=0
ProxyPreserveHost On

</VirtualHost>

实际上,直接进入http://public.ip.address:8081/subdomain/可以很好地加载应用程序,但是由于任何原因,进入http://subdomain.domain.com都可以得到503。最初,它只是在Ubuntu页面上显示Apache。意识到我需要a2ensite并重新加载Apache,此操作已经完成。

日志显示如下:

[Wed Jul 10 21:36:59.049131 2019] [proxy:error] [pid 2298:tid 139882856969984] (113)No route to host: AH00957: HTTP: attempt to connect to public.ip.address:8081 (3.220.176.240) failed
[Wed Jul 10 21:36:59.049182 2019] [proxy_http:error] [pid 2298:tid 139882856969984] [client 128.229.4.2:58611] AH01114: HTTP: failed to make connection to backend: public.ip.address

我们知道系统可以很好地访问8080,所以我不确定为什么它会遇到这种流量。如上所述,直接从外部点击ProxyPass URL可以加载页面,因此进入该容器的流量很好。 SELinux已禁用。据我所知,这是在AWS中,并且安全组已正确配置(请参阅:流量来自外部)。

使用公共IP地址是我能够使容器间流量正常工作的唯一方法,因为使用Docker的桥接IP以前无法正常工作。

在旧系统上,当我所有的应用程序均为PHP 5.6时,我有一个标准的VirtualHost语句,该语句仅接收subdomain.domain.com并将其指向特定的DocumentRoot。我无法在此处执行此操作,因为反向代理容器需要使用正确的PHP版本将流量传递给该容器。

非常感谢您提供的任何提示或技巧。

0 个答案:

没有答案