博客搬迁啦(附踩坑记录)
博客四周年了,之前一直放在在阿里云上1核1G小机器里用着,贵不说带宽小性能还差,这次算是做一个升级吧。而且一并更换了主域名,原主域名jarviswang.me因为太长,而且.me域名目前处于无法备案的状态,虽然我是在无法备案之前备案的,暂时不受影响,但保不准以后哪天就真的直接把备案给吊销了。所以为了保险起见这次反正要搬运,那么干脆把主域名也一起更换成了jarvisw.com,因为com域名相对政策稳定一些。
更换以后域名变短了,也更好记了,这样子以后自己输域名的时候也不用多打那么多字了。这次我又启用了一个新的域名邮箱jarvis#jarvisw.com,欢迎大家给我发邮件交流。原邮箱jarvis#jarviswang.me仍然是继续保留的,当然以后还是希望主要使用新的域名邮箱。另外原域名全站都301到了新域名,所以对SEO影响不大。
好了接下来说说在搬迁过程中碰到了什么坑,由于JarvisOJ以及JarvisOJ的题目服务器和我的个人博客接下来打算独立运营啦,而租用阿里云的费用太过昂贵,日后继续扩展的空间很小,于是这次打算自己租用物理机来托管这3个项目。由于IP地址比较昂贵,所以就采用了SLB+内网IP的方式来组建应用结构以节省公网IP地址。最后这次博客的结构变成了:

服务器采用了一台虚拟机作为SLB,用nginx来反向代理内网机器上的web服务,本来以为只要设置好nginx的proxy_pass就好了,后来发现还是不行,坑点在wordpress有些页面的$_SERVER[‘HTTPS’]的值仍然获取不到,以至于很多资源和js链接的加载仍然用了http,导致被浏览器Block而导致页面显示异常。
分析了一下原因,最后发现是由于我的wordpress使用的是lnmp来搭建的,lnmp中php是使用fastcgi来解析的,而fastcgi没有从nginx中正确获得SERVER数组中HTTPS的值引起。
虽然这个问题折腾了好半天,不过解决办法比较简单,只要在上一级的SLB中location /的块中添加一行:
proxy_set_header X-Forwarded-Proto $scheme;
就可以传递CDN那边传递过来的协议(HTTPS),然后内网的nginx设置中(LNMP的nginx配置文件位置是:/usr/local/nginx/conf/nginx.conf),在http块中添加:

然后在fastcgi的配置文件(/usr/local/nginx/conf/fastcgi.conf)中加一行:
fastcgi_param HTTPS $xfp_https;
最后重启lnmp即可生效。
至此问题解决。
由此可见使用https的坑还是挺多的,还是需要平时注意积累。
求合作
可以给个联系方式吗?寻求合作