Ubuntu16.04配置Nginx反向代理

通过反向代理在百度索引中添加GitHub Pages博客,让你的博客能被百度

Posted by JTChen on October 21, 2018

次日更新

一夜后,再次进行诊断分析。从返回可以看到,Baiduspider已经成功的爬到设置的nginx服务器,并抓取成功。 百度搜索jtchen blog 反向代理 success

参考Ubuntu 16.04 下安装 Nginx
参考Github Pages百度索引收录

博客建好后迫切的想增加访问量曝光率,于是想到让百度谷歌收录自己的博客,很快就在谷歌的站长平台录入成功,之后静静等待其爬虫即可。 在百度搜索资源平台信息录入完后,却发现GitHub是禁止百度爬虫的。考虑到本人博客基本都是中文,因此让百度能索引到是很重要的一件事了。

—-分割线2018-10-22—–


经过一番百度查询,了解到解决方法大致有下面几类:

  1. CDN内容分发
    该方法是利用CDN提前将博客缓存至各节点,让Baiduspider访问获取这些节点信息而不是直接访问Github。但该方法在CDN节点未缓存时,仍会回源致使爬虫失败。
    以前使用过腾讯CDN和阿里云CDN,但对于我这种访问亮极少的博客来说,访问CDN节点时基本都需要回源获取缓存,导致网页访问缓慢。故预估该方法效果差,简单实测也证明了这一点。185.0.0.0经查询是欧盟地址,即爬虫还是回源到Github。

  2. 镜像网站
    该方法思路较简单,即利用自有服务器搭建网站的镜像,让网站爬虫时访问镜像网页。缺点是镜像需要更新,且为避免占用80端口仍需要配置反向代理。
  3. 反向代理
    正向代理是用户通过代理服务器去请求目标服务器服务,反向代理则是对用户透明的,即用户是不知道其存在,当用户需访问服务器A时,其实是在访问反向代理服务器B,并由B请求服务。这里使用上的区别主要在于需不需要用户设置。若设置缓存,则相当于单节点CDN。接下来是我配置的过程

配置Nginx反向代理

首先配置自己域名的DNS

这里有两种方法,一是所有访问博客的请求全部通过反向代理,另一种则是指定百度访问请求才通过反向代理访问。第二种需要你在用的DNS服务商支持,我用的是阿里云DNS,刚好支持。这里指定解析线路为百度,解析记录值填准备使用服务器的ip。

Ubuntu 16.04 下安装 Nginx

我使用的是去年开通的腾讯云VPS,当时120开了一年。一直闲置着,现在终于能利用上了。ubuntu上安装Nginx非常简单

1
2
sudo apt-get update
sudo apt-get install nginx

防火墙设置

查看列表

1
sudo ufw app list

Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

  • Nginx Full:此配置文件打开端口80(正常,未加密的Web流量)和端口443(TLS / SSL加密流量)
  • Nginx HTTP:此配置文件仅打开端口80(正常,未加密的Web流量)
  • Nginx HTTPS:此配置文件仅打开端口443(TLS / SSL加密流量)

第二步 键入以下命令来启用此功能:

1
2
#可选单独HTTP或HTTPS,根据需要开启
sudo ufw allow 'Nginx Full'

配置反向代理

编辑配置文件

1
sudo vim /etc/nginx/sites-enabled/default

在最后加入如下代码段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server{
      listen 80;
      #替换成自己的域名
      server_name www.jtchen.cn; 
      location / {
          #下面替换成自己的github pages主页
          proxy_pass         https://jtchen.github.io; 
          proxy_redirect     off;
          proxy_set_header   User-Agent "Mozilla/5.0";
          proxy_set_header   Host               $host;
          proxy_set_header   X-Real-IP          $remote_addr;
          proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
       }
 }

重启Nginx

1
2
sudo systemctl start nginx
sudo systemctl reload nginx

至此大功告成,静待Baiduspider来拜访即可

以上就是我的设置过程,如果有疑问可以在下面评论区提出