【Lv:4】

众所周知,因为一些


因此今天推出一个教程,通过一门
本文仅介绍 Apache 在 Ubuntu 下的配置方法,若有了解 Nginx 的朋友欢迎接坑。
什么叫反向代理
通俗来讲,反向代理可以理解为「将一个域名下的网站替换成另一个域名下的网站,但访问时仍然使用这个域名」的技术。举个例子,我们都知道百度的域名是 baidu.com,你此时拥有一个域名 daobanbaidu.com,那么你便可以通过反向代理,让用户访问 daobanbaidu.com 的时候显示 baidu.com 的内容,且在这个「虚拟」站点下做出的任何改动,都将和真正的百度同步。
那么再扩大一点想,如果你是主机 C,此时因为未知原因无法访问站点 A,而站点 B 的服务器可以正常访问站点 A,那么如何从主机 C 访问站点 A 呢?很简单,「使用」站点 B 的服务器访问站点 A 。
基本流程
首先我们需要
- 一台不在大陆的 Ubuntu 服务器(开 幕 雷 击)
- Apache 2.4
- 脑子
Bash:
sudo apt install apache2.4
安装完毕后,我们需要启动几个必须的 Apache 模块:
Bash:
sudo a2enmod proxy proxy_connect proxy_http ssl rewrite
然后我们按照正常操作去配置一个域名。首先找到
/etc/apache2/sites-available
下的站点文件。我们这里以 000-default.conf
和 default-ssl.conf
为例子。首先打开 000-default.conf
:
Bash:
vim 000-default.conf
然后我们进行一些设置。
Apache 配置:
<VirtualHost *:80>
ServerAdmin # 这里填写你的邮箱地址,或者不填写也可以
ServerName # 这里填写你的域名,比如 daobanbaidu.com
SSLProxyEngine On # 开启代理 SSL,避免一些因为 SSL 导致的不必要重定向
ProxyRequests Off
ProxyPass # 填写代理规则
ProxyPassReverse # 反向代理,跟上面的 ProxyPass 一样填写即可
# 代理规则举例:ProxyPass / https://baidu.com
# 这相当于将 ServerName 里设置的域名(例如 daobanbaidu.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 证书。
Apache 配置:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
SSLEngine on
SSLCertificateFile # public 证书
SSLCertificateChainFile # chain 证书
SSLCertificateKeyFile # 私有证书
</VirtualHost>
</IfModule>
证书可以在阿里云或腾讯云上免费申请,阿里云是赛门铁克的证书,腾讯云则是亚洲威信。阿里云申请证书仅需支付宝身份证实名,腾讯云需要身份证+银行卡实名(但有绕过的方法

最后我们启用这两个站点再重载 Apache2 就大功告成了。
Bash:
sudo a2ensite *.conf
sudo systemctl reload apache2
这时候,如果访问 daobanbaidu.com 就会像开头所说的那样,呈现出 baidu.com 的样子。顺着这个逻辑,可以将 daobanbaidu.com 更改为你的域名(比如说我的 subilan.win),baidu.com 更改为你的博客实际地址(比如说我的 subilan.github.io),这样当访问前者便可以直接呈现出后者的画面,相当于解决了这个大陆无法访问的问题。

最后编辑: