2011-09-07 29 views
20

Tôi có ứng dụng flask, được lưu trữ bởi uwsgi, với nginx làm proxy ngược lại với uwsgi, bằng cách sử dụng được xây dựng trong uwsgi proxy module. Bất cứ khi nào tôi truy cập trang chuyển hướng đến một trang khác, tiêu đề Vị trí trỏ đến URL không phải HTTPS. Ví dụ:HTTPS không mong muốn -> Chuyển hướng HTTP với ứng dụng nginx + uwsgi + flask

$ 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 cấu hình của tôi trông như thế này:

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

Trả lời

28

uwsgi cần phải được thông qua chương trình (http hoặc https) được sử dụng để phục vụ các yêu cầu để viết Location tiêu đề chính xác.

Theo mặc định, một loạt cài đặt được đặt trong tệp /etc/nginx/uwsgi_params. Dòng include uwsgi_params; trong tệp cấu hình là tải những gì.

Vì lý do nào đó, lược đồ không phải là một trong các cài đặt mặc định này. Điều này có thể được cố định bằng cách thêm:

uwsgi_param UWSGI_SCHEME $scheme; 

để cấu hình nginx sau dòng include uwsgi_params;, hoặc bằng cách thêm vào các tập tin /etc/nginx/uwsgi_params trực tiếp.

+0

đây chính xác là những gì tôi đang tìm kiếm. Cảm ơn. – stephenmuss

Các vấn đề liên quan