GET-запросы к nginx обратному прокси-серверу в цикле перенаправления 302 - PullRequest
1 голос
/ 06 января 2020

Я настроил сервер nginx, который настроен в качестве обратного прокси-сервера для моего приложения node.js для обслуживания запросов API. Когда я делаю POST-запросы к этому nginx серверу, этот запрос правильно передается в приложение узла, но любой GET-запрос по этому же результату приводит к перенаправлению 302 l oop. Я пробовал разные изменения конфигурации за 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;
    }

Демоапи восходящего потока определяется как

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

Я начинаю думать, что это может быть проблема с nginx версии 1.16, установленной с amazon-linux-extras, поскольку подобная конфигурация отлично работает на одном из старых серверов с nginx версией 1.12. .

1 Ответ

1 голос
/ 06 января 2020

Я наконец выяснил причину root этой проблемы. Переадресация 302 отправлялась приложением sails, работающим на 127.0.0.1:1337, так как оно не получало заголовок хоста в запросе GET, пересылаемом (обратный прокси) nginx.

. Чтобы устранить проблему, я добавили следующую строку в блок местоположения сервера

proxy_set_header Host $host;

Разместив его здесь, чтобы любой, кто столкнулся с той же проблемой, мог получить выгоду.

...