【问题标题】:AH01114: HTTP: failed to make connection to backend: localhost (apache as docker container)AH01114:HTTP:无法连接到后端:localhost(apache 作为 docker 容器)
【发布时间】:2019-08-22 10:18:59
【问题描述】:

我正在尝试在我的本地计算机上的服务器应用程序 (JIRA) 前面设置 apache。有点基于: https://mimiz.github.io/2017/05/18/Configure-docker-httpd-image.html

apache 和服务器应用程序都作为 docker 容器运行。

启动我的服务器应用程序工作正常,我可以在以下位置访问 web-ui:

http://localhost:8087

但是当我启动 apache 并尝试在浏览器中访问它时:

http://localhost:80

我明白了:

Service Unavailable

当我查看日志时,它说:

H00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.18.0.5. Set the 'ServerName' directive globally to suppress this message
[Mon Apr 01 09:08:50.408757 2019] [mpm_event:notice] [pid 1:tid 140140879032384] AH00489: Apache/2.4.38 (Unix) configured -- resuming normal operations
[Mon Apr 01 09:08:50.409320 2019] [core:notice] [pid 1:tid 140140879032384] AH00094: Command line: 'httpd -D FOREGROUND'
[Mon Apr 01 09:09:53.094495 2019] [proxy:error] [pid 8:tid 140140638869248] (111)Connection refused: AH00957: HTTP: attempt to connect to 127.0.0.1:8087 (localhost) failed
[Mon Apr 01 09:09:53.094571 2019] [proxy_http:error] [pid 8:tid 140140638869248] [client 172.18.0.1:53110] AH01114: HTTP: failed to make connection to backend: localhost

这是我启用/添加的 httpd.conf 详细信息:

LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
...

<VirtualHost *:80>
  ServerName www.app1.lol
  ProxyPass / http://localhost:8087
</VirtualHost>

这就是我启动服务器应用程序的方式:

docker run --network sample-network -p 0.0.0.0:8087:8087 -ti -d --name my-server-container my-server-image

这就是我启动 apache 的方式:

docker run -d -p 80:80 --network sample-network --name my-apache-container my-apache-image

问题是我在 httpd.conf 文件或 docker run 命令(或两者的组合)中的配置吗?

【问题讨论】:

    标签: apache docker


    【解决方案1】:

    请参考https://docs.docker.com/network/network-tutorial-standalone/

    应该配置:

    <VirtualHost *:80>
      ServerName localhost
      ProxyPass / http://172.17.0.1:8087
    </VirtualHost>
    

    或:

    <VirtualHost *:80>
          ServerName localhost
          ProxyPass / http://ip_addressof_my-server-container:8087
    </VirtualHost>
    

    使用:docker inspect container_id查看容器的ip地址。

    【讨论】:

    • 你从哪里想出 172.17.0.1 的?
    • 是Docker主机和桥接网络之间的网关IP地址。
    • 好吧,这总是相同的值吗?这在某些文档中有所描述吗?
    • 试一试然后告诉我,在这里记录docs.docker.com/network/network-tutorial-standalone,我以前也遇到过这个问题。
    • 这不应该是公认的答案——容器的地址会改变。事实上,初始配置完全没问题
    【解决方案2】:

    面对完全相同的问题,对我而言,redhat 和 debian 都通过以下命令解决

    sudo iptables -I INPUT 1 -i lo -j ACCEPT

    Loopback 需要开启这种方式。

    注意:由于某些安全原因,它默认禁用,我们需要启用它

    【讨论】:

      猜你喜欢
      • 2018-12-20
      • 1970-01-01
      • 2019-04-01
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 2022-01-25
      相关资源
      最近更新 更多