技术解析

nginx 如何配置 https 强制跳 http
0
2021-05-20 20:38:27
idczone

因为业务需大带宽服务器求,必须实现 https 跳到 http。。 求教。


不跳 https 不就行了

在 Safari 中有的时候会莫名其妙的加上··· 在 http 协议下下加载了 https 协议的资源是不是就会自动加上?
@qcloud

做个重定向不就行了

不会,如果 https 协议中有 http 链接会报错

listen 443 ssl;
rewrite ^ http://$http_host$request_uri? permanent;

一页 50 条帖子,完全可以自行 Google 的问题占了其中一条

server {
...
return 301 http://example.com$request_uri;
}

自行股沟了一番,最后没有找到合适的解决办法才来询问大家的。





很感谢回复,我再去试试,对 nginx 还不是很在行

直接 return 一个 301 试试?

301 重定向
```
server {
listen 80;
server_name ;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name ;
......
}
```

看错了,应该是
```
server {
listen 443 ssl http2;
server_name ;
......
return 301 http://$server_name$request_uri;
}
server {
listen 80;
server_name ;
......
}
```

你的 HTTPS 是不是开了 HSTS ?

推荐可以参考这个: https://imququ.com/post/my-nginx-conf.html

好的,多谢指点!

什么业务需求这么奇葩

if ($server_port ~ 443){
rewrite ^(/.*)$ http://$host$1 permanent;
}

一语点醒梦中人。。。就是 nginx 在配置的时候加了 [add_header Strict-Transport-Security max-age=15768000;] 导致。。Safari 每次输入域名都会跳到 https 的协议,注释掉就好了。那么问题来了,之前带着这个 header 访问过 https 协议的浏览器中应该是存有这个 header 信息的吧,那么怎么清理掉呢?

做一个永久的 rewrite 就行,这个问题百度就可以解决吧

这个应该无解,等过期吧

清客户端缓存即可。

加个 Strict-Transport-Security max-age=0 看看能不能覆盖掉





感谢楼上的几位大哥的回复,十分感谢!
回去试一下这个方案是否行得通,然后回来告诉您。

前端人员说 https 和 http 两种协议下,在 local 什么的本地存储中数据不能共用。

那全跳去 https 啊

if ($scheme = https) {
return 301 http://$server_name$request_uri;
}

localstorage 跨域

凉了 叫访问过的人都清理下浏览器吧。。。

开了 HSTS ?凉了。换域名吧

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服