Apache ProxyPass Docker容器返回503

我坚持使用容器化的虚拟主机。 设置如下:

mydomain.com

  • Ubuntu VPS(digitalOcean,上下文),Docker预安装
    • Apache容器(反向代理),访客端口80到主机80
    • Web应用程序容器(运行apache),访客端口80到主机8081

Apache服务很好,Apache的信息页面显示在mydomain.com和Web应用程序显示在mydomain.com:8081

问题是试图ProxyPass sub.mydomain.com服务于mydomain.com:8081

我在Apache容器中devise了以下站点 – available / sub.mydomain.com.conf。

<VirtualHost *:80> ServerName sub.mydomain.com ProxyPreserveHost on ProxyRequests off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass "/" "http://localhost:8081/" retry=0 ProxyPassReverse "/" "http://localhost:8081/" 

但是,sub.mydomain.com返回503错误。

我还用digitalOcean添加了以下DNSlogging: – CNAME:* .mydomain.com是mydomain.com的别名 – A:sub.mydomain.com指向[DROPLET IP]

我也尝试过:取代'localhost':

 ProxyPass "/" "http://localhost:8081/" retry=0 ProxyPassReverse "/" "http://localhost:8081/" 

mydomain.comDROPLET IP和从Apache容器内部执行的route返回的[网关] IP。 更改为这些值或者给出相同的503错误,或者导致页面连续加载,既不返回错误, 也不返回请求的页面。 我不知道下一步该怎么办,任何帮助表示赞赏。 有很多不同的设置,我认为一个更有经验的人可能会指出我哪里出了错。 提前致谢!

在代理容器中,您不能使用localhost:8081作为代理地址。 本地主机实际上是容器本身的回环地址,而不是你的主机服务器,没有任何监听端口8081那里(导致503)。

我的build议是使用docker工人只为你服务和使用标准的Apache(或甚至更好的Nginx的)代理。