NGINX 如何强制 https 301 跳转到 https

2016-10-20 18:18:13 +08:00
 ErnieSauce
使用 https 后网站上转载的优酷视频显示空白
所以想取消掉 https
但是百度已经收录了 https
现在想把 https 强制跳转到 http
百度了很多方法都重定向循环了
8387 次点击
所在节点    NGINX
19 条回复
qgy18
2016-10-20 18:31:29 +08:00
你之前用 301 永久重定向把 http 跳往 https 了吧。
浏览器会记住 301 跳转,所以你再从 https 跳到 http 就循环了。
试试在 https 跳往 http 时加一个参数。
ErnieSauce
2016-10-20 19:09:30 +08:00
@qgy18 浏览器记住的跳转清楚 cookie 后还会存在吗?我需要怎么修改
ansheng
2016-10-20 19:13:21 +08:00
晒下我的配置文件把,希望对你有帮助:
```nginx
server {
server_name blog.ansheng.me;
listen 80;
listen 443 ssl;

set $rewriterule https;

if ($scheme = https) {
set $rewriterule "${rewriterule}7";
}

if ($host ~* ^blog.ansheng.me) {
set $rewriterule "${rewriterule}8";
}
if ($rewriterule != "https78") {
return 301 https://blog.ansheng.me$request_uri;
break;
}

ssl_certificate /.../xxx.crt;
ssl_certificate_key /.../xxx.key;
ssl_trusted_certificate /.../xxx.crt;

......
}
```
xiujie_JIANG
2016-10-20 19:24:59 +08:00
rewrite ^ https://$server_name$request_uri? permanent;
JJaicmkmy
2016-10-20 20:08:56 +08:00
首先,你标题写错了。
第二,优酷是可以用 HTTPS 引用的。你可以用 https 打开优酷,然后把播放器的地址复制下来。
rainfox
2016-10-20 20:32:42 +08:00
@JJaicmkmy , HTTPS 打不开优酷的吧!但是优酷确实是可以 https 引用的。地址: http://cloud.youku.com/tools/
ErnieSauce
2016-10-20 22:22:19 +08:00
@JJaicmkmy https 也不支持手机端播放 所以不纠结这个问题 我想解决跳转的问题 大神会吗 *- -
ErnieSauce
2016-10-20 22:23:02 +08:00
@ansheng 你这个是从 http 跳转到 https 吧? -
rainfox
2016-10-20 22:26:10 +08:00
@ErnieSauce 然而,优酷的 https 那个其实是支持手机播放的,亲测。
MaiCong
2016-10-20 22:34:54 +08:00
if ($ssl_protocol = '') {
   return 301 https://$server_name$request_uri;
}
error_page 497 https://$server_name$request_uri;
ErnieSauce
2016-10-20 22:40:37 +08:00
@rainfox 确实可以 你有用过 wordress 的视频插件吗
xiaoz
2016-10-20 22:52:49 +08:00
ansheng
2016-10-20 23:12:59 +08:00
@ErnieSauce 是的……
happywowwow
2016-10-20 23:17:31 +08:00
if ($server_port = "80") {
return 301 https://$host$request_uri;
}

最近写的. 因为没写 server_name 所以用了$host
jqw1992
2016-10-21 00:51:42 +08:00
server {
listen 80;
server_name XXXX.com www.XXXX.com;
rewrite ^/(.*) https://www.laba.me/$1 permanent;
}
msg7086
2016-10-21 00:58:28 +08:00
@happywowwow
@jqw1992
@MaiCong
@xiujie_JIANG
看题要审题……?

@ErnieSauce
一定要重写成 http 的话,随便加一个无用参数应该就可以了。
清 Cookie 是不会清访问缓存的。
ErnieSauce
2016-10-21 08:20:55 +08:00
@msg7086 终于看到了一个明白人 - - 随便加一个参数是指?
我在使用 if ($server_port = "80") {
return 301 https://$host$request_uri;
}
这个的时候 只有首页会自动跳转到 https 请问该如何设置
w99wen
2016-10-21 10:38:05 +08:00
server {
listen *:80;
server_name git.w99wen.tk;
server_tokens off; ## Don't show the nginx version number, a security best practice
return 301 https://git.w99wen.tk:443$request_uri;
access_log /var/log/gitlab/nginx/gitlab_access.log gitlab_access;
error_log /var/log/gitlab/nginx/gitlab_error.log;
}
msg7086
2016-10-22 00:00:42 +08:00
@ErnieSauce 一来别用 if ,二来调试的时候先用 302 做,没问题了再上 301 。
做 https 跳转到 http ,试试
rewrite ^(.*)$ http://example.com$1?http;

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

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

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

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

© 2021 V2EX