以302重定向循环获取对nginx反向代理的请求

以302重定向循环获取对nginx反向代理的请求,nginx,reverse-proxy,Nginx,Reverse Proxy,我已经配置了一个nginx服务器,该服务器被设置为node.js应用程序的反向代理,用于服务api请求。当我向这个nginx服务器发出POST请求时,该请求将正确地发送到node应用程序,但是对同一个应用程序的任何GET请求都会导致302重定向循环。3天以来,我一直在尝试不同的配置更改,但找不到解决方案 以下是nginx.conf server_name demo.example.com; root /usr/share/nginx/html; # L

我已经配置了一个nginx服务器,该服务器被设置为node.js应用程序的反向代理,用于服务api请求。当我向这个nginx服务器发出POST请求时,该请求将正确地发送到node应用程序,但是对同一个应用程序的任何GET请求都会导致302重定向循环。3天以来,我一直在尝试不同的配置更改,但找不到解决方案

以下是
nginx.conf

    server_name  demo.example.com;
    root         /usr/share/nginx/html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location /api/ {
            proxy_pass http://demoapi/;
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            proxy_set_header Accept-Encoding "";
            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 X-NginX-Proxy true;

            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';

            proxy_buffers 8 32k;
            proxy_buffer_size 64k;
            proxy_redirect off;
    }
上游demoapi定义为

upstream demoapi {
    server 127.0.0.1:1337;
    keepalive 300;
}

我开始认为,从amazon linux extras安装的nginx版本1.16可能会出现问题,因为类似的配置在一台安装了nginx版本1.12的旧服务器上运行良好。

我终于找到了这个问题的根本原因。302重定向是由运行在
127.0.0.1:1337
上的sails应用程序发送的,因为它没有通过nginx在GET request forwarded(反向代理)中获取主机头

为了解决这个问题,我在服务器位置块中添加了以下行

proxy_set_header Host $host;
把它贴在这里,这样任何面临同样问题的人都可以从中受益