【问题标题】:Nginx proxy Apache2 php ERR_CONNECTION_RESETNginx 代理 Apache2 php ERR_CONNECTION_RESET
【发布时间】:2021-01-05 03:08:32
【问题描述】:

我在docker中部署了一个应用程序,它是一个带有apache2的php应用程序。 docker中有一个nginx,用来代理应用。 www.myhost.com -> nginx(docker) -> 我的应用程序(docker)

如果我通过 host:port 请求我的应用程序,它会成功运行。 当我通过域名请求我的应用程序时,它会随机获取 ERR_CONNECTION_RESET。

net::ERR_CONNECTION_RESET 200 (OK)
server {
    listen 80;
    server_name myhost.com;
    client_max_body_size 5120m;
    location / {
        #client_max_body_size 1024M;
        #proxy_redirect off;
        #proxy_set_header Host $http_host;
        #proxy_set_header X-Real-IP $remote_addr;
        #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #proxy_request_buffering off;
        #proxy_buffering off;
        proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
        proxy_pass http://192.168.17.19:8080/;
      }
    }

【问题讨论】:

  • 看看couple of other answers,你能试试用nginx禁用压缩吗?
  • @johnson 您使用哪些 docker 镜像? 192.168.17.19 是你的网桥地址吗?你能添加更多细节,如docker rundocker-composeDockerfile 来模拟问题吗?
  • 在 freeCodeCamp 上寻找这篇文章:freecodecamp.org/news/…
  • 尝试将proxy_set_header X-NginX-Proxy true; 添加到位置部分
  • 你能在你的 nginx 容器中尝试curl -I http://192.168.17.19:8080/。我怀疑它无法到达您的应用程序。

标签: php nginx apache2


【解决方案1】:

使用这个配置让 Nginx 服务器使用 Nginx 作为反向代理

upstream myhost {
    server <docker-container-hostname/IP-address>:<port>
}

server {
    listen        80;
    server_name   myhost.com;

    location / {
        proxy_pass  http://myhost;
    }
}

【讨论】:

  • 你能解释一下为什么这在 OP 版本不起作用的情况下有效吗?快速浏览一下,除了您使用的是允许您指定多个主机的upstream 并且您省略了proxy_ 指令外,它看起来相同。如果这提供了更多,它将帮助 OP 和未来的读者理解差异。
  • 这和上游基本一样,没有headers。
  • 我的问题不是 nginx 不工作,它在大多数请求下都可以正常工作,但由于连接重置随机失败。
猜你喜欢
  • 2015-09-10
  • 1970-01-01
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 2018-09-19
  • 1970-01-01
  • 2021-12-23
  • 2011-01-14
相关资源
最近更新 更多