我有一个 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;
}
}