网站在定向到 nginx 服务器中的 https 后无响应



我在django框架中有一个Web应用程序,我已经设置了一个nginx服务器来为站点提供服务。我还在站点中设置了SSL。该网站在http和https上都可以正常工作。

现在我想将所有 http 请求定向到 https,以便我的用户始终使用安全版本。

这是我的nginx配置:

server {
listen 80;
listen 443 ssl;
server_name site.com www.site.com;
ssl_certificate /path/to/SSL;
ssl_certificate_key /path/to/SSL/key;
location = /favicon.ico { access_log off; log_not_found off; }
location /site_media/static/ {
alias /home/user/folder/static/dist/;
}
location / {
include         uwsgi_params;
uwsgi_pass      unix:/tmp/site.sock;
}
}

现在,当我插入 301 重定向到 https 并重新启动服务器时,站点无响应。

return         301 https://$server_name$request_uri;

进入我的

server { ... }

任何知道如何解决此问题的想法,任何建议将不胜感激。

将不受保护的return语句放入服务器块将尝试重定向http站点和https站点,从而导致循环。您可以将return语句放在一个if块中,并检测协议何时未https,或者更常见的解决方案是将配置拆分为两个server块,例如:

server {
listen 80;
server_name site.com www.site.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name site.com www.site.com;
ssl_certificate /path/to/SSL;
ssl_certificate_key /path/to/SSL/key;
location = /favicon.ico { access_log off; log_not_found off; }
location /site_media/static/ {
alias /home/user/folder/static/dist/;
}
location / {
include         uwsgi_params;
uwsgi_pass      unix:/tmp/site.sock;
}
}

最新更新