nginx☞问题集

阅读量: zyh 2018-04-14 09:34:44
Categories: > Tags:

💥upstream prematurely closed connection while reading response header from upstream

汉译:当从上游读取响应头时,上游提前关闭连接

经确认,此错误一般是开启长链接后,长链接超时关闭时,恰好有数据发生

因此,解决方案有两个:

  1. nginx 将长链接的超时设置为 0 ,即关闭长链接
keepalive_timeout 0; # 此值默认为0,默认位于nginx主配置
  1. 关闭 nginx 长链接超时主动关闭的功能
proxy_http_version 1.1; # 支持长链接
proxy_set_header Connection ""; # 此值默认是 close,将其设置为空从而使nginx不会主动关闭长连接;

nginx 添加自定义 header 后,就会覆盖掉相应的默认值

Module ngx_http_proxy_module (nginx.org)

Syntax: proxy_set_header field value;
Default: proxy_set_header Host $proxy_host; proxy_set_header Connection close;
Context: http, server, location

💥get参数经过 proxy_pass 后,上游后端程序无法获取

    location ~* ^/v2/(.*) {
        proxy_pass http://127.0.0.1:8083/$1?$args;
        proxy_connect_timeout 10s;
        proxy_send_timeout 10s;
        proxy_read_timeout 10s;
        proxy_max_temp_file_size 1024m;     # 若设置为0,表示不启用缓存
        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_buffers 256 4k;
        proxy_intercept_errors on;        #开启错误页支持
    }

✨通过 $args 传递。