同一服务器上的 Nginx 反向代理到 Apache 时发生网关超时错误

同一服务器上的 Nginx 反向代理到 Apache 时发生网关超时错误

我正在使用运行端口 80 和 443 的 Ubuntu 16.04 和 Nginx。我使用 Proxy_Pass 将流量转发到监听端口 8080 的 Apache。Nginx 和 Apache 都在同一台服务器上。

问题是 Nginx 似乎无法将流量转发到 Apache。我收到 504 网关超时错误。我可以确认 Apache 正在运行并在端口 8080 上接收流量。

我在我的设置中广泛使用 proxy_pass。转发到另一台服务器上的 8080 端口上的 Apache 的流量运行正常。我唯一的问题是 Apache 与 Nginx 在同一台服务器上运行。

我尝试设置 Apache listen 8080listen 127.0.0.1:8080但出现同样的错误。

在 Nginx 中我使用了proxy_pass http://localhost:8080;proxy_pass http://127.0.0.1:8080,但结果是一样的。

我发现的唯一不同之处在于,如果我netstat -tulpn在 Apache 使用时运行listen 8080,端口 8080 只会在 tcp6 中显示为:::8080。它似乎没有在 tcp(IPv4)中打开。但是listen 127.0.0.1:8080tcp(IPv4)专门打开,但在 tcp6 中不再打开。如果我理解正确的话,它应该在 IPv4 和 IPv6 上都打开,本地地址在 IPv4 和IPv6 中127.0.0.1:8080都显示为 。0.0.0.0:8080:::8080

请注意,防火墙未启用。

我尝试检查我的配置,但无济于事。如果我将其转发到其他服务器,我的设置就可以正常工作。我认为这与端口或绑定有关?但我似乎找不到答案。一直在谷歌搜索,但找不到解决方案。

希望有人知道我做错了什么。

谢谢。

答案1

如果您尝试连接到 127.0.0.1:8080 上的 apache,则需要确保 apache 正在专门监听 IPv4,因为您尝试使用 IPv4 连接到它。

如果您想使用 IPv6,请在反向代理上指定 IPv6 地址。

相关内容