nginx 强制 https 浏览器总是提醒重定向过多不能正常访问网页

2016-04-28 14:42:06 +08:00
 ITOutsider
rewrite ^(.*)$ https://$host$1 permanent;

return 301 https://$server_name$request_uri;

都试过了
22996 次点击
所在节点    NGINX
17 条回复
cxbig
2016-04-28 15:00:29 +08:00
加个条件试试
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
stabc
2016-04-28 15:09:34 +08:00
提这种问题记得要贴全配置,免得让想帮你的人瞎猜。
lslqtz
2016-04-28 15:12:41 +08:00
你这是填在 listen 443;内了吧。。
我是直接用 listen 80; 然后直接 return 301 。
listen 443 则按正常来,贴一下我的配置文件
server {
listen 80;
index index.php index.htm index.html;
root /var/www/html;

return 301 https://www.hardwareunion.com$request_uri;

location ~ .*\.(php|php5)?$ {
fastcgi_pass unix:/var/run/phpfpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}

server {
listen 443 ssl http2;
index index.php index.htm index.html;
root /var/www/html;

ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_certificate /etc/nginx/1.crt;
ssl_certificate_key /etc/nginx/1.key;
ssl_ct on;
ssl_ct_static_scts /etc/nginx/sct1;
location ~ .*\.(php|php5)?$ {
fastcgi_pass unix:/var/run/phpfpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}
lslqtz
2016-04-28 15:13:45 +08:00
妈蛋。。下面的 server_name 去了,上面 return 的忘去了。。噗
knightdf
2016-04-28 15:45:49 +08:00
循环重定向了吧。。
usernametoolong
2016-04-28 15:46:15 +08:00
一楼已给答案
xustrive
2016-04-28 16:10:15 +08:00
留个记号。 下次好找~~~ 一脸闷 B 看不懂 逃····
ceoimon
2016-04-28 16:11:40 +08:00
为什么不用 HSTS
lHUAC
2016-04-28 16:59:37 +08:00
@ITOutsider

这或者是正确代码( 100%解决~),参考

if ($server_port = 80){
return 301 https://$server_name$request_uri;}
if ($scheme = http){
return 301 https://$server_name$request_uri;}
error_page 497 https://$server_name$request_uri;
ldsink
2016-04-29 09:13:04 +08:00
推荐一个网站
https://mozilla.github.io/server-side-tls/ssl-config-generator/
自动生成正确的 Nginx SSL 配置,默认开启了 HSTS 。
你用这个配置按需求减就好。
ITOutsider
2016-04-29 14:59:12 +08:00
非常感谢回复本帖的答主
@cxbig
@stabc
@lslqtz
@lslqtz
@knightdf
@usernametoolong
@xustrive
@xustrive
@ceoimon
@lHUAC
kmdd33
2017-04-08 21:54:51 +08:00
@cxbig 请问你这个 if ($scheme = http) {
return 301 https://$server_name$request_uri;
} 可以添加在 nginx.conf 里面的 server {}段里面的任意位置吗?我也遇到了重定向次数过多的问题。
kmdd33
2017-04-08 22:08:15 +08:00
@lHUAC 请问你这个 代码
if ($server_port = 80){
return 301 https://$server_name$request_uri;}
if ($scheme = http){
return 301 https://$server_name$request_uri;}
error_page 497 https://$server_name$request_uri;
可以添加在 nginx.conf 里面的 server {}段里面的任意位置吗?
cxbig
2017-04-08 23:50:16 +08:00
@kmdd33 从你另一个帖子 https://www.v2ex.com/t/353371 看,配置文件很乱。
通常我们很少直接去改 nginx.conf 文件
我不知道你用的哪个 Linux 发行版,最好在你那个帖子说明一下。

拿 Ubuntu Server 来说,不用改主配置文件。
有个目录用来放你自己的网站定义:/etc/nginx/sites-available
当你需要把一个网站上线的时候,把该目录的配置文件( vhost )做 Link 到:/etc/nginx/sites-enabled
再 reload 或 restart nginx 即可,你还可以用 service nginx configtest 来检查有没有语法错误
这是第一步,建议你弄清楚 nginx 的基本配置结构再说。
kmdd33
2017-04-09 01:36:42 +08:00
@cxbig centos7 , vhost 里面是空的,没有配置虚拟主机
lHUAC
2017-04-12 09:53:30 +08:00
@kmdd33 您好,可以,如果你只是为了将 HTTP 强制跳转到 HTTPS ,或者这样来会更好。
server{
listen 80;
server_name xxx.com;#你的域名
return 301 https://$server_name$request_uri;
}
kmdd33
2017-04-12 18:15:53 +08:00
@lHUAC 谢谢,问题解决

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/275074

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX