cloudflare 提供的免费 https 怎样设置才能强制所有 http 重定向到 https

2016-04-26 16:09:35 +08:00
 miao
我 vps debian 安装的 amh.sh 4.2 版.

Nginx 1.4.4
MySQL 5.5.34
PHP 5.3.27

域名使用 cloudflare 免费版,
请问如何 设置 cloudflare 或者自己 vps 的 Nginx 配置
让一个域名, 如下三种形式
http://example.com/*
http://www.example.com/*
https://example.com/*

全部 301 跳转到 下面一种 url
https://www.example.com/*

试过了 下面代码进入死循环
if ($scheme = http ) {
return 301 https://$host$request_uri;
}
15853 次点击
所在节点    SSL
19 条回复
ivmm
2016-04-26 16:14:37 +08:00
怎样设置才能强制所有 https 重定向到 https

应该是

怎样设置才能强制所有 http 重定向到 https

crystom
2016-04-26 16:15:59 +08:00
if is evil
miao
2016-04-26 16:16:11 +08:00
@ivmm 是的. 已经修改
miao
2016-04-26 16:16:27 +08:00
@crystom what is it mean
Pastsong
2016-04-26 16:16:37 +08:00
用 js 或者 meta refresh
miao
2016-04-26 16:22:01 +08:00
@Pastsong 这个不可取. 但是还是谢谢了
Slienc7
2016-04-26 16:26:55 +08:00
CF 后台自带功能,说明文档里面也有。
h404bi
2016-04-26 16:27:24 +08:00
用 cloudflare 自带的 Page Rules 。
kslr
2016-04-26 16:28:16 +08:00
我也想知道有没有办法可以在 cloudflare 上直接重定向到 HTTPS 上,因为刚刚我发现我家的 443 端口可以使用,服务器也已经在路上了
mrjoel
2016-04-26 16:32:47 +08:00
1 、 http://*[your domain]/* Always use HTTPS

2 、 htts://[your domain]/+ Forward URL 301/302

TO:https://www.[your domain]/+

注意规则生效顺序 1 至 2
mrjoel
2016-04-26 16:33:37 +08:00
第二条 https :// 打错了。
mrjoel
2016-04-26 16:37:33 +08:00
以上效果是该域名所有链接使用 https

将裸域***.COM 定向到 www.***.COM ,包括***.COM 下所有目录
alect
2016-04-26 16:43:58 +08:00
除了上面说的方法还可以在自己的服务器上写规则跳转啊。。
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*)$ https://%{SERVER_NAME}/$1 [L,R]
miao
2016-04-26 16:59:36 +08:00
@mrjoel @h404bi
谢谢您二位, 我这样设置 是否是正确的? 目测我的站可以 301 跳转了.

@h404bi 您的三条规则 打码太多了, 看不大清楚

@alect 谢谢您, 我试了您的代码, 还是会无限 301 死循环, 因为我的 vps 没有加密

意思是, 用户 https --> cloudflare --> http --> 我的 vps, 所以自己 vps 设置规则,总是无限 301 死循环
h404bi
2016-04-26 17:33:56 +08:00
@miao 每个人的需求不一样,规则就不同了,打码看不清没关系。
你需要带 www 的 url ,先把 http://www.example.com/* 强制用 https (如果除了 www 子域其它也要的话就用 http://*.example.com/*)
然后将 http://example.com/*https://example.com/* 重定向到 https://www.example.com/$1 应该就可以了。
oott123
2016-04-26 19:28:00 +08:00
if ( $http_x_forwarded_proto != 'https' ) {
return 301 https://$host$request_uri;
}
此贴终结……
Zohar
2016-04-26 21:24:09 +08:00
本人小白,大神轻喷。
https://www.iwch.me/archives/623.html
JJaicmkmy
2016-04-26 21:44:13 +08:00
直接在 Cloudflare 开启 HSTS 即可,何必这么麻烦的跳转。
miao
2016-04-27 15:08:28 +08:00
@JJaicmkmy 开启了 HSTS , ssl 评分就到 A+了. 谢谢你

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

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

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

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

© 2021 V2EX