一、概念
反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。除了反向代理,还有正向代理,本文主要配置反向代理。
正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内 容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容 返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。比如:我们访问不了 Google,但我们可以使用代理服务器访问 Google。
反向代理 正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容 原本就是它自己的一样。
二、开启代理模块
首先确保 Apache 有以下模块,主要包含:
mod_proxy.so
mod_proxy_ajp.so
mod_proxy_balancer.so
mod_proxy_connect.so
mod_proxy_http.so
mod_proxy_ftp.so
打开配置 conf/httpd.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_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
注意:
mod_proxy_balancer.so
是做负载均衡使用的模块,如果不懂怎么配置(像我现在这样),那就不要去掉前面的 # 号了,否则会出现 Apache 无法启动的问题。
三、配置反向代理
继续打开配置 conf/httpd.conf
文件,在文件末尾添加如下代码:
# 监听 8888 端口的请求
Listen 8888
# 启用代理请求
ProxyRequests Off
ProxyPass / http://127.0.0.1:3000
ProxyPassReverse / http://127.0.0.1:3000
<proxy *:8888>
AllowOverride All
Order Deny,Allow
Allow from all
</proxy>
配置完成,重启 Apache 服务器。
四、测试
按照上面的配置,我们就不能直接访问 http://127.0.0.1:3000
了,而是应该使用 http://127.0.0.1:8888
访问,因为,我们是使用 8888 端口代理的 3000 端口。
首先,启动 3000 端口的 APP(我是使用 Koa 开发的一个初始页面),然后,在浏览器地址栏输入 http://127.0.0.1:8888
,如果能正常看到页面说明配置完成。
参考
- 正向代理与反向代理的区别【Nginx读书笔记】 作者:特种兵-AK47 来源:CSDN
- Apache设置反向代理 作者:skyfeng713 来源:博客园
网友评论