нежелательные HTTPS -> HTTP перенаправления с приложением nginx + uwsgi + flask - PullRequest
20 голосов
/ 07 сентября 2011

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

$ 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;
    }
}

1 Ответ

28 голосов
/ 07 сентября 2011

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

По умолчанию в файле /etc/nginx/uwsgi_params задана куча настроек.Загружать их нужно в строке include uwsgi_params; в файле конфигурации.

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

uwsgi_param UWSGI_SCHEME $scheme;

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

...