NGINX 如何强制 http 301 跳转到 https 网上的教程都是错误的

2015-08-21 17:25:52 +08:00
 miao
诸如
rewrite ^(.*)$ https://$host$1 permanent;
error_page 497 https://$host$uri?$args;
等规则试验了都不行
都会导致循环重定向
27920 次点击
所在节点    NGINX
28 条回复
RAKE
2015-08-22 00:26:41 +08:00
return 301
当然有种更变态的方法就是开启 hsts 。。。
ryd994
2015-08-22 23:35:51 +08:00
@Bardon 你贴的配置要工作,还漏了 ssl on;(顺带一提,这也是个已经废弃的选项)
希望你在复制粘贴前能先 STFW ,而不是祈祷网上随便找来的一段字符能工作。

如果你已经 Google 过,你应该明白:
497 是表示客户端用 HTTP 访问了一个应该用 HTTPS 的端口时返回的非标准状态。因此 497 法本身是个非标准&过时的 hack 。要使 497 法生效,就要把 80 端口故意错误的配置成 SSL 端口。这个方法只能挂一个站。

Again ,对 Nginx ,唯一正解就是两个 server 。 6 楼去掉那行 ssl on 就很好

@RAKE http 访问时返回的 HSTS 是不生效的,至少 chrome 上是这样

@lzxgh621 回复前能先读读别人的回复么? if is evil 。何况根本没必要
Bardon
2015-08-22 23:43:25 +08:00
@ryd994 不懂你什么意思
我确认我在 google 后,且经过实机测试的结果,你或学没有看到“...... ”,所以激动了?
如果你认为我只是个复制粘贴党,那么我们没有共同语言
Bardon
2015-08-22 23:44:58 +08:00
@ryd994 重新看了篇,懂你意思了,分歧在非标准端口上
我的配置没问题
usernametoolong
2015-08-23 09:15:30 +08:00
3 楼 4 楼已经给了答案
lazyyz
2015-10-04 16:14:47 +08:00
开 80 和 443 两个 server ,在 80 里用 return 301 就可以了
location / {
return 301 https://你的域名$request_uri;
}
q66213772
2017-04-10 14:55:00 +08:00
有只监听一个端口的方法吗?
t5k5
2020-02-05 19:04:34 +08:00
一个万年老贴帮了我,和楼主遇到一样的问题,重定向放在了同一个 server 导致重定向无法访问。
后来独立出来一个 server,却也没有生效。
突然意识到,应该把重定向的 server 放前面 :(
希望对后面搜索找寻答案的人有点帮助

server
{
listen 80;
server_name www.domain.com;
return 301 https://www.domain.com$request_uri;
}

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

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

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

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

© 2021 V2EX