Gunicorn 根视图不再适用于 SSL nginx 代理

Gunicorn 根视图不再适用于 SSL nginx 代理

我有一个 Django 项目,它在根目录上显示登录视图。以下是 URL 模式:

url(r'^$', views.login_view, name="root_login")

这在未加密的连接上有效:当我http://example.com在浏览器中访问时,我会得到我的登录模板。

我最近在我的 nginx 代理上安装了 SSL 证书letsencrypt。现在,当我尝试时,https://example.com我得到了“欢迎使用 nginx!”页面。当我使用不同的 URL 模式(例如https://example.com/login)时,应用服务器会按预期呈现视图。事实上,除了根视图之外,所有应用服务器视图都可以正常工作。

所以我猜我location /的 SSL 服务器块上下文中的 nginx 配置是错误的,但我不明白哪里错了,因为它与我未加密的端口 80 块中的上下文完全相同location /,而后者是有效的。这是整个 SSL 块 - 我的错误在哪里?

server {
    #SSL connection
    listen 443;
    ssl on;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    ssl_ciphers #omitted for brevity;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:1m;
    ssl_stapling on;
    ssl_stapling_verify on;
    add_header Strict-Transport-Security max-age=15768000;

    #serve static content
    location /static {
        alias /path/to/static;
    }

    #proxy connection to application server
    location / {
        proxy_pass         http://app_servers; #the gunicorn unix socket
        proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
    }
}

相关内容