美文网首页
nginx串联(一台反向代理,一台分发)引起问题

nginx串联(一台反向代理,一台分发)引起问题

作者: sunland_0416 | 来源:发表于2021-04-20 09:47 被阅读0次

    在工作中遇到nginx串联的502问题
    由于历史原因会出现既有域名访问接口,也有ip+端口号访问接口,也有域名+端口号访问接口
    简单介绍下大概架构如下(全是docker部署的)
    一台nginx作为主机,用来反向代理域名到ip+端口号,并配置两个nginx连接池(一主一备)

    http {
      ......
      upstream WEB_NGINX_POOL{
        server ip1:port1;
        server ip1:port2 backup;
      }
      upstream 域名{
        server ip1:port3;
      }
      server {
        listen 80;
        server_name 域名;
        #include /usr/local/nginx/conf/domain.conf
        # 下面location可以抽出来单独文件,也可以不抽出来
        location / {
          access_log logs/domain.log main;
          if ( $host = '域名' ) {
            proxy_pass http://域名;
          }
          include /usr/local/nginx/conf/proxy_params;
        }
      }
      server {
        listen port3;
        server_name localhost;
        include /usr/local/nginx/conf/proxy_params;
      }
    }
    

    proxy_params内容如下:

    proxy_set_header cookie $http_cookie;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-Port $remote_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header request_uri $uri;
    proxy_set_header referer $http_referer;
    
    proxy_ignore_client_abort on;
    
    proxy_pass_header X-Accel-Redirect;
    
    proxy_pass_request_headers on;
    proxy_pass_request_body on;
    
    client_max_body_size 50m;
    client_body_buffer_size 256k;
    #60 0000 000
    proxy_connect_timeout 600000000;
    proxy_send_timeout 600000000;
    proxy_read_timeout 600000000;
    
    proxy_buffer_size 256k;
    proxy_buffers 4 256k;
    proxy_busy_buffers_size 256k;
    proxy_temp_file_write_size 256k;
    proxy_max_temp_file_size 128m;
    
    proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
    

    上面这样配置后会导致如下问题
    1). 访问不存在的uri时并不会立即返回404,虽然后面的nginx会返回404,但主nginx会显示500
    2). 偶尔会出现502 no live upstream while conneting to upstream,client: XXX.XXX.XXX.XXX,server:localhost,request:"GET uri HTTP/1.1", upstream:"http://WEB_NGINX_POOL/" host:"host"

    相关文章

      网友评论

          本文标题:nginx串联(一台反向代理,一台分发)引起问题

          本文链接:https://www.haomeiwen.com/subject/qhmglltx.html