重定向https问题已解决
接上文。
关于为什么第一次打开个人网站,不能重定向https,而之后又可以https的问题。看了一个网站内容,解决了我的疑惑,原文如下。
“其实是这样的,第一次访问http页面,由于服务器端没有做好301重定向,所以出现链接断开无法访问,第二次正常访问https站点时,支持HSTS的浏览器响应头含有Strict-Transport-Security: max-age=31536000;意思是在接下来的一年(即31536000秒)中,浏览器只要向xxx或其子域名发送HTTP请求时,必须采用HTTPS来发起连接。比如,用户点击超链接或在地址栏输入 http://xxx/ ,浏览器应当自动将 http 转写成 https,然后直接向 https://xxx/ 发送请求。”
当然,我的情况和他有所不同,我是第一次访问,可以正常打开个人网站,只不过没有正常重定向到https而已。
其实,之前我一直都没有在服务器端配置https重定向,只是在我的所有可能遇到的场景中,浏览器都自动强制请求了https访问。所以我也没怎么发现问题。
刚开始我也想设置重定向,不过提示重定向次数过多,就放弃了。今天才知道是没有把80端口监听单独拿出来的缘故。
用了上一篇里面的教程,今天特意用妈妈手机实验,发现仍然没有办法在首次打开我的个人网站时实现重定向。
其实,我发现,并不一定要用新的设备去验证,只需要把浏览器做下清除就可以了。全清,尤其是证书。
然后就看了很多教程,无非就是新老版本的两种nginx重定向方法,无论我用哪种,都没有效果。
最后,反复试好几次后,发现应该是自己重启nginx命令没用对。
应该用
1 |
nginx -s reload |
然后,再次验证,发现问题终于解决。
我今天一直用的是
1 |
systemctl restart sshd.service |
这个难道不能重新加载新的配置吗,不是太懂。
现在的重定向配置如下。
1 2 3 4 5 |
server { listen 80; server_name scarsong.com; rewrite ^(.*)$ https://$host$1 permanent; } |
这一段要单独拿出来配置,不能和监听443的内容放在一起,不然会提示重定向次数过多。
没有用上篇文章的那个新版本命令。反正这个有效果了,不想再实验了
参考内容如下。
初次使用http打不开页面,使用https打开过后使用http协议又能正常访问