背景

因为自己的博客托管在腾讯云的1核1G的入门机上,也就没心情太折腾这个服务器了。不折腾的办法无疑是采用一键面板,安装方便操作相对也简单。因此在多方查找之下选择了优秀的国产服务器面板————宝塔面板。由于以前一直用的apache做的web环境,自己部署https是没有任何问题的,但是用了nginx之后却发现自己站点的https认证死活过去,一直后台提示错误路径http://www.yudepeng.com

问题查找

当时死活查找不出来问题在哪。还想直接封闭80端口解决,但是为了SEO考虑没有封闭(本身为了SEO,去反SEO这就得不偿失了)。问题解决的曙光在于,一次和群里的宝塔开发人员讨教问题时,开发人员说“nginx开启https时默认是302跳转”“302跳转、302跳转、302......”,当时第一反应就是这问题出在了302上边。有兴趣的可以看下科普部分。

302、301跳转科普
301跳转: 页面永久性移走,通常叫做301跳转,也叫301重定向,301转向.指的是当用户点击一个网址时,通过技术手段,跳转到指定的一个网站.
302跳转:302重定向又称之为302代表暂时性转移(Temporarily Moved ),英文名称:302 redirect。 也被认为是暂时重定向(temporary redirect),一条对网站浏览器的指令来显示浏览器被要求显示的不同的URL,当一个网页经历过短期的URL的变化时使用。一个暂时重定向是一种服务器端的重定向,能够被搜索引擎蜘蛛正确地处理。

问题解决

既然发现了问题那就要解决掉,因为302可是有黑历史的————关于这个黑历史我们会在SEO黑帽手段中讲,首先咨询了宝塔的开发人员,他告诉我需要添加permanent,这里点个赞宝塔的开发人员回复解决问题速度很快。那么怎么改呢?大家直接看下边代码

if ($server_port !~ 443){
rewrite ^(.*)$  https://$host$1 permanent;
}
用上边的代码替换掉下边的代码
if ($server_port !~ 443){
rewrite ^/.*$ https://$host$request_uri;
}