Подтвердить что ты не робот

Нежелательные HTTPS → перенаправления HTTP с помощью приложения nginx + uwsgi + flask

У меня есть приложение flask, размещенное uwsgi, с nginx в качестве обратного прокси-сервера для uwsgi, используя встроенный модуль uwsgi proxy. Всякий раз, когда я посещаю страницу, которая перенаправляется на другую страницу, заголовок Location указывает на URL-адрес, отличный от HTTPS. Например:

$ socat openssl:my-web-server:443 stdio
GET / HTTP/1.0
Host: my-web-server

HTTP/1.1 302 FOUND
Server: nginx/1.0.4
[...]
Location: http://my-web-server/login

Моя конфигурация nginx выглядит следующим образом:

server {
    listen 80;
    listen 443 ssl;
    server_name my-web-server;
    charset utf-8;

    ssl_certificate /etc/nginx/certs/server.pem;
    ssl_certificate_key /etc/nginx/certs/server.key;

    location / {
        uwsgi_pass unix:/tmp/uwsgi.sock;
        include uwsgi_params;
    }
}
4b9b3361

Ответ 1

uwsgi необходимо передать схему (http или https), используемую для обслуживания запроса, чтобы написать правильный заголовок местоположения.

По умолчанию набор параметров устанавливается в файле /etc/nginx/uwsgi_params. Строка include uwsgi_params; в файле конфигурации - это то, что загружает их.

По какой-то причине схема не является одной из этих настроек по умолчанию. Это можно исправить добавлением:

uwsgi_param UWSGI_SCHEME $scheme;

в конфигурацию nginx после строки include uwsgi_params; или путем непосредственного добавления в файл /etc/nginx/uwsgi_params.