我尝试将所有HTTP流量重定向到HTTPS,但最终会进入重定向循环。
我做错了什么或者我错过了什么?
server {
listen 80;
return 301 https://test.website.com;
}
server {
listen 443 ssl;
server_name test.website.com;
passenger_enabled on;
passenger_user app;
passenger_ruby /usr/bin/ruby2.3;
root /home/app/webapp/public;
ssl on;
ssl_certificate /etc/ssl/certs/tls.crt;
ssl_certificate_key /etc/ssl/private/tls.key;
}
仍然不确定出了什么问题。没有重定向。 HTTP和HTTPS有效。 HTTPS服务器在重定向时没有做什么。
server {
listen 80;
server_name test.website.com;
passenger_enabled on;
passenger_user app;
passenger_ruby /usr/bin/ruby2.3;
root /home/app/webapp/public;
}
server {
listen 443 ssl;
server_name test.website.com;
passenger_enabled on;
passenger_user app;
passenger_ruby /usr/bin/ruby2.3;
root /home/app/webapp/public;
ssl_certificate /etc/ssl/certs/tls.crt;
ssl_certificate_key /etc/ssl/private/tls.key;
}
答案 0 :(得分:0)
我猜您的应用程序配置错误,仍然会将重定向发回http
。
您的http
到https
规则始终将其发送回根目录。你应该做两件事。
在保留原始URI的同时从http
转发到https
:
return 301 https://$host$request_uri;
有关详细信息,请参阅this document。
使用浏览器端工具箱或插件分析HTTP Location:
响应标头,以确定此重定向循环的性质。有关详情,请参阅this link。
答案 1 :(得分:0)
您可以尝试使用https://www.digitalocean.com/community/questions/http-https-redirect-positive-ssl-on-nginx
上提供的代码server {
listen 80;
server_name my.domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name my.domain.com;
[....]
}
希望这会有所帮助......