当前位置: 首页 > 知识库问答 >
问题:

当代理服务器关闭时,NGINX反向代理返回502坏网关

姬温文
2023-03-14

我设置nginx作为我的apache tomcat的反向代理。它像我预期的那样正常工作。然而,当Apache Tomcat服务器关闭时,NGINX总是返回502坏网关时,我感到困惑。而不是返回504坏网关超时?

502坏网关:服务器充当网关或代理,从上游服务器收到无效响应。

504网关超时服务器充当网关或代理,没有收到来自上游服务器的及时响应。

user  root;
worker_processes  1;

events {
        worker_connections  1024;
}

http {
       include       mime.types;
       default_type  application/octet-stream;
       sendfile        on;

       ssl_session_cache   shared:SSL:20m;
       ssl_session_timeout 10m;
       keepalive_timeout  65;

       map $http_upgrade $connection_upgrade {
               default Upgrade;
               '' close;
       }

        server {
                listen          *:80;
                return 301      https://$host:443$request_uri;
        }

        server{
                listen       *:443; #Ip of client
                # Specifies the maximum accepted body size of a client request, as indicated by the request header Content-Length.
                client_max_body_size 1024M;
                # ssl config
                ssl                  on;
                ssl_certificate      server.crt;
                ssl_certificate_key  server.key;

                # for proxy timeout
                proxy_connect_timeout 75s;
                proxy_read_timeout 600s;
                proxy_send_timeout 600s;

                # not cache authorization
                proxy_no_cache $http_pragma $http_authorization;


                location /wss {
                        rewrite ^.*\/wss\/(?<api>.*) /$api break;
                        proxy_pass http://127.0.0.1:8071;

                        # for websocket
                       proxy_set_header Upgrade $http_upgrade;
                       proxy_set_header Connection $connection_upgrade;
                       proxy_http_version 1.1;
                       proxy_buffering off;
                       proxy_ignore_client_abort off;
                       proxy_read_timeout 1d;
                       proxy_send_timeout 1d;
                }

                location / {
                        proxy_buffering off;
                        proxy_pass http://127.0.0.1:8071;
                }
        }
}

访问时出现错误日志:

2015/10/19 10:10:03[错误] 29475#0:*44连接()失败(111:拒绝连接),同时连接到上游,客户端:192.168.70.60,服务器:,请求:"GET/HTTP/1.1",上游:"http://127.0.0.1:8071/",主机:"192.168.70.161"

2015/10/19 10:10:03[错误] 29475#0:*44连接()失败(111:拒绝连接),同时连接到上游,客户端:192.168.70.60,服务器:,请求:"GET/HTTP/1.1",上游:"http://127.0.0.1:8071/",主机:"192.168.70.161"

有人能解释为什么NGINX返回502 HTTP错误而不是504错误吗?或者,我的配置是否存在问题?

我想,我错过了。504仅当NGINX无法将请求转发到代理服务器,但代理服务器没有像NGINX预期的那样及时响应时才会发生。就我而言:

proxy_connect_timeout 75s;
proxy_read_timeout 600s;
proxy_send_timeout 600s;

因此,在代理服务器关闭的情况下,NGINX将响应HTTP错误代码502,503?

共有1个答案

咸承教
2023-03-14

默认情况下,SELinux配置不允许NGINX连接到远程web、fastCGI或其他服务器。您可以使用setEnforce0设置许可模式,以检查是否应归咎于SELinux。如果是,您只需使用audit2allow生成一组允许执行所需操作的策略规则:

grep nginx/var/log/audit/audit。日志| audit2allow-M nginx

Semodure-inginx.pp

之后,请记住再次启用SELinux与set强制执行1。

关于这方面的更多信息,您可以查看此活动。

 类似资料:
  • 在通过eclipse上传应用程序后,我收到了502坏网关错误,我不明白为什么会发生这种情况? 我通过AWS弹性豆茎控制台创建了一个示例应用程序。然后我在eclipse中加载了服务器。之后我发布了它,并在EB控制台中获得了“环境更新成功完成”的消息。然而,当我转到网址时,我得到一个502坏网关错误。我看了日志,看看出了什么问题,但我唯一发现的是 连接到上游时失败(111:连接被拒绝),客户端:172

  • 我使用Nginx作为反向代理,它接收请求,然后执行proxy_pass以从运行在8001端口上的上游服务器获得实际的web应用程序。 如果我转到mywebsite.com或执行wget,我会在60秒后获得504网关超时...但是,如果我加载mywebsite.com:8001,应用程序将按预期加载! 和Nginx错误日志的输出:

  • 我的nginx.conf文件是这样的: 现在,在打开一些URL时,它抛出了502个坏网关,但对其他URL则没有。我犯的错误。日志为: 2019/01/10 23:53:39[错误]12139#12139:*5 recv()在从上游读取响应头时失败(104:由对等方重置连接),客户端:127.0。0.1,服务器:localhost,请求:“GET/wordpress/HTTP/2.0”,上游:fas

  • 我正在使用nginx-proxy将子域连接到不同的docker服务。自从最近的一次图像更新后,我再也无法连接到我的gitlab实例了。我不知道是nginx-proxy还是gitlab更新导致了这个问题。当我尝试连接到gitlab.mydomain.com时,会出现以下错误: > 浏览器:502坏网关。nginx/1.13.3 nginx-代理日志: nginx-proxy_1 nginx.1 20

  • null 我倾向于认为它是第一个,但在这种情况下,nginx不会是应用程序的入口...(这是个问题吗?)

  • 主要内容:1. 代理服务器介绍,2. 将请求传递给代理的服务器,3. 传递请求标头,4. 配置缓冲区,5. 选择传出IP地址本文介绍代理服务器的基本配置。 您将学习如何通过不同协议将NGINX请求传递给代理的服务器,修改发送到代理服务器的客户端请求标头,以及配置来自代理服务器的响应缓冲。 代理服务器的基本配置目录 代理服务器介绍 将请求传递给代理的服务器 传递请求标头 配置缓冲区 选择传出IP地址 1. 代理服务器介绍 代理通常用于在多个服务器之间分配负载,无缝地显示来自不同网站的内容,或者通过