【Linux学习】反向代理_如何拯救我的 GitHub Pages 博客?
众所周知,因为一些(强)的原因,GitHub Pages 最近惨遭赠送北京电信免费加速服务和三网进出路由劫持,幸运的是目前已经恢复了。GitHub Pages 很好用,又免费又简单,除了速度慢了点hhh。也正因此有很多人将 GitHub Pages 用作部署自己的博客,甚至于成为了一种时尚。目前来讲,静态、GitHub Pages 和繁杂的友情链接已经成为一个「酷酷」的博客的标配。而这件事情也势必引起了中国大陆的 GitHub Pages 用户的担心,自己的博客是否在将来就这样被(强)了?这是很惨的。
因此今天推出一个教程,通过一门也许在很久之前就已经烂大街的技术来绕开这些问题。这门技术的名称叫做反向代理。本文中所提到的一切内容仅限于此次事件的补救,与任何其它行为无关,请勿将此方法用作非法用途!
本文仅介绍 Apache 在 Ubuntu 下的配置方法,若有了解 Nginx 的朋友欢迎接坑。
什么叫反向代理
通俗来讲,反向代理可以理解为「将一个域名下的网站替换成另一个域名下的网站,但访问时仍然使用这个域名」的技术。举个例子,我们都知道百度的域名是 baidu.com,你此时拥有一个域名 yaoyuanlong.com,那么你便可以通过反向代理,让用户访问 yaoyuanlong.com 的时候显示 baidu.com 的内容,且在这个「虚拟」站点下做出的任何改动,都将和真正的百度同步。
那么再扩大一点想,如果你是主机 C,此时因为未知原因无法访问站点 A,而站点 B 的服务器可以正常访问站点 A,那么如何从主机 C 访问站点 A 呢?很简单,「使用」站点 B 的服务器访问站点 A 。
基本流程
首先我们需要
若没有 Apache 2.4 可以轻松安装
安装完毕后,我们需要启动几个必须的 Apache 模块:
然后我们按照正常操作去配置一个域名。首先找到 /etc/apache2/sites-available
下的站点文件。我们这里以 000-default.conf
和 default-ssl.conf
为例子。首先打开 000-default.conf
:
vim 000-default.conf
然后我们进行一些设置。
<VirtualHost *:80>
ServerAdmin # 这里填写你的邮箱地址,或者不填写也可以
ServerName # 这里填写你的域名,比如 yaoyuanlong.com
SSLProxyEngine On # 开启代理 SSL,避免一些因为 SSL 导致的不必要重定向
ProxyRequests Off
ProxyPass # 填写代理规则
ProxyPassReverse # 反向代理,跟上面的 ProxyPass 一样填写即可
# 代理规则举例:ProxyPass / https://baidu.com
# 这相当于将 ServerName 里设置的域名(例如 yaoyuanlong.com)映射的根目录代理到 https://baidu.com
<Proxy *>
Require all granted # 允许外部访问
</Proxy>
# 以下可选,加上以后会强制 HTTPS
# RewriteEngine on
# RewriteCond %{SERVER_PORT} !^443$
# RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>
这样,我们的一个反向代理就完成了!核心部分只有 ProxyPass
和 ProxyPassReverse
两个。具体用法已经在上面给出,如仍然有不懂可以回帖询问~
接下来我们要配置 SSL。default-ssl.conf
里的内容,实际上只需要复制我们上面已经配置的那些。除此之外,我们还需要配置 SSL 证书。
证书可以在阿里云或腾讯云上免费申请,阿里云是赛门铁克的证书,腾讯云则是亚洲威信。阿里云申请证书仅需支付宝身份证实名,腾讯云需要身份证+银行卡实名。
最后我们启用这两个站点再重载 Apache2 就大功告成了。
这时候,如果访问 daobanbaidu.com 就会像开头所说的那样,呈现出 baidu.com 的样子。顺着这个逻辑,可以将 daobanbaidu.com 更改为你的域名(比如说我的 subilan.win),baidu.com 更改为你的博客实际地址(比如说我的 subilan.github.io),这样当访问前者便可以直接呈现出后者的画面,相当于解决了这个大陆无法访问的问题。
有任何问题欢迎追问哦。