由于 GitHub Pages 把百度爬虫屏蔽了,导致百度爬虫爬取不到我的个人主页,所以被百度收录的内容很少,能收录的基本都是我手动提交的。后来我的解决办法就是自己搭建了一台 Web 服务器,然后在 DNSPod 中把百度爬虫的访问流量引到我的 Web 服务器上面,服务器主机是我自己购买的 VPS,服务器应用我选择的是强大的 Nginx。本文就记录 Web 服务器搭建以及配置 SSL 证书这个过程。
安装 Nginx
Nginx 官方网站:https://www.nginx.com/resources/wiki/start/topics/tutorials/install 。
我的 VPS 是 CentOS 7 X64 版本的,所以安装 Nginx 的过程比较麻烦一点,需要自己下载源码、编译、安装,如果需要用到附加模块【例如 http_ssl 证书模块】,还需要重新编译,整个过程比较耗时。如果不熟悉的话,遇到问题也要折腾半天才能解决。所以,我在不熟悉的 Nginx 的情况下选择了一种简单的方式,直接自动安装,并自带了一些常用的模块,例如 ssl 证书模块。但是缺点就是安装过程稍微长一点,在网络好的情况下可能需要 3-5 分钟。我还参考了别人的文档:https://gist.github.com/ifels/c8cfdfe249e27ffa9ba1 ,但是仅供参考,因为我发现也有一些不能使用的地方。
创建源配置文件
在 /etc/yum.repos.d/ 目录下创建一个源配置文件 nginx.repo,如果不存在这个目录,先使用 mkdir 命令创建目录,然后在目录中添加一个文件 nginx.repo,使用命令:
1 | vi nginx.repo |
进入编辑模式,填写如下内容:
1 | [nginx] |
编辑完成后保存即可。
自动安装 Nginx
接下来就是使用命令自动安装 Nginx 了【敲下命令,看着就行了,会有刷屏的日志输出】:
1 | yum install nginx -y |
安装完成后,使用以下命令启动:
1 | service nginx start |
可以使用命令 service nginx status 查看 Nginx 是否启动:
然后你就能看到 Nginx 的主页了,默认是 80 端口,直接使用 ip 访问即可【如果这里打不开,可能是端口 80 没有开启,被防火墙禁用了,需要重新开启,开启方法参考后面的章节】。
获取 SSL 证书、配置参数
SSL 证书获取
证书的获取可以参考我的文章:利用阿里云申请免费的 SSL 证书 。我在阿里云获取的证书是免费的、有效期一年的,等证书过期了可以重新申请【不知道能不能自动续期】,因为我有阿里云的帐号,所以就直接使用了。当然,通过其它方式也可以获取 SSL 证书,大家自行选择。
直接下载即可,下载后上传到站点的任意目录,但是要记住文件的位置,因为等一下配置 Nginx 的时候需要指定证书的位置。我把它们放在了 /site/ 目录,一共有 2 个文件:.key 文件时私钥文件,.pem 文件时公钥文件。
Nginx 参数配置
更改配置文件,打开文件【使用 vi 命令会自动创建不存在的文件】,进入编辑模式:
1 | # 配置 |
填写内容如下【我这里只是配置基本的参数 server 有关内容,大家当然可以根据实际需要配置更为丰富的参数】,留意证书的公钥与私钥这 2 个文件的配置:
1 | # 80 端口是用来接收基本的 http 请求,里面做了永久重定向,重定向到 https 的链接 |
只要按照如上的配置,就可以同时接收 http 请求与 https 请求【实际上 http 的请求被永久重定向到了 https】,我的配置如下图【请忽略 www 二级域名的配置项】:
验证参数是否准确
有时候配置了参数,可能因为字符、参数名问题导致启动失败,然后再回来改配置文件,比较繁琐,所以可以直接使用 Nginx 提供的命令来验证配置文件的内容是否合法,如果有问题可以在输出警告日志中看到,改起来也非常方便。
1 | nginx -t |
可以看到,配置项正常,接下来就可以启动 Nginx 了。
开启端口、启动 Nginx
在上面的步骤中,如果在一开始想启动 Nginx,虽然启动成功了,但是却访问不了 Nginx 的主页,那很大可能是服务器的端口没有开启,导致访问请求被拒绝,所以需要适当开启必要的端口【如果没有安装防火墙工具 firewall 请自行安装】。
1 | # 查看已经开启的端口 |
大家看一下我的服务器的端口开启信息:
验证站点
打开站点 https://blog.playpi.org ,可以愉快地访问了,可以看到 https 链接的绿锁。
接着查看一下 SSL 证书的信息。
题外话
重定向问题思考
关于开启 https 的访问,我一开始也配置了 www 的二级域名,但是通过日志发现没有通过 301 重定向访问 https://www.playpi.org 的请求,一直不明白原因。后来发现,因为做重定向的时候还是重定向到 GitHub 上面了。同理,如果使用 ip 直接访问,可以观察到自动跳转到 https://www.playpi.org 了,查看证书还是 GitHub 的证书。所以后来直接把百度爬虫的请求转发到 blog 的二级域名还是明智的【www 的二级域名就不用自己再搞一套了】,否则百度爬虫还是抓取不到。如果百度爬虫直接使用 https 链接抓取还是可以的,但是看百度站长里面的说明,是通过 http 的 301 重定向抓取的。
Nginx 的 https 模块安装
由于我使用的是简单小白的安装方式,不需要关心额外用到的模块,例如 http_ssl 模块,因为安装包里面自带了这个模块,可以使用 nginx -V 命令查看。
因此,如果大家有使用源码编译安装的方式,注意 https 模块不能缺失,否则不能开启 https 的方式。

