[从零建站] Apache 实现反向代理

反向代理是什么

首先,我们要搞清楚什么是反向代理。那么何为反向代理,要实现什么功能呢?

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。

即:用户访问代理服务器,代理服务器将被代理的网站内容取过来给用户,用户并不知道该网站是不是源站。

选择假定我们买了一个域名,有且仅有一台服务器,但是想要建立多个不同的网站。而那些网站都要求使用根目录搭建,而不是二级目录,既每个网站占用一个端口。这时,我们将不得不戴上端口号去访问这些网站。

例如:http://fuyeor.com:8000、http://fuyeor.com:8090、http://fuyeor.com:92

这样既不美观又不方便/整齐划一。而用反向代理即可解决这个问题。下面我们用FU网云主机cloud.fuyeor.fu来实操演示一遍。

配置服务器环境

连接远程桌面,输入你的服务器 IP 或域名,访问云主机。然后下载最新版的 Apache 服务器并安装启动。

先手准备

需要准备好若干二级域名。比如:www1.fuyeor.com ,请在控制台添加域名解析,类型选择 A 记录,记录值填写你想要的二级域名名称,将其指向你的服务器 IP 地址。

  • 记录类型:选择 A
  • 主机记录:一般是指子域名的前缀(如需创建子域名为 www1.fuyeor.com, 主机记录输入 www1;如需实现dns-example.com,主机记录输入 @)。
  • 解析线路:选择 默认 (默认为必选项,如未设置会导致部分用户无法访问 )。
  • 记录值:记录值为 IP 地址,填写 IPv4 地址。
  • TTL:为缓存时间,数值越小,修改记录各地生效时间越快,默认为 10 分钟。

配置反向代理

用记事本打开Apache安装目录下的 /conf/httpd.conf 文件。

我们需要打开proxy反向代理模块。为了避免出错,请直接复制以下代码。

#开启 Apache 反向代理模块
Include conf/extra/httpd-vhosts.conf
 
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so

接下来配置网站。示例代码如下:

#配置一个virtualHost
<VirtualHost *:80>
    ServerName #此处填写你的二级域名#
    ProxyRequests Off
ProxyPreserveHost On
    <Proxy />
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass /  #此处填写你的域名+端口,同下#
    ProxyPassReverse /  #此处填写你的域名+端口, 如fuyeor:81#
</VirtualHost>

#例如 www1.fuyeor.com 反代 Microsoft.com:
<VirtualHost *:80>
    ServerName www1.fuyeor.com
<IfModule mod_proxy.c>
    ProxyRequests Off
SSLProxyEngine on
    ProxyPassReverse / http://www.microsoft.com/
  	AllowEncodedSlashes NoDecode
	ProxyPass "/" "http://www.microsoft.com/" nocanon
</IfModule>
</VirtualHost>

示例代码:

<VirtualHost *:80>
    ServerName exmple.fuyeor.com
    ProxyRequests Off
ProxyPreserveHost On
    <Proxy />
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass /  http://fuyeor.com:90
    ProxyPassReverse /  http://fuyeor.com:90
</VirtualHost>

现在重启Apache服务器。访问你的二级域名,即可看到站点。

本篇教程到此结束。需要说明,这仅仅是反向代理的应用之一。

默认图片
Marugu Fuyeor
欢迎来到复网 - 教程与解决方案 - Marugu Fuyeor
文章: 95

留下评论