阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Apache做反向代理服务器

136次阅读
没有评论

共计 3448 个字符,预计需要花费 9 分钟才能阅读完成。

Apache 代理分为正向代理和反向代理

1 正向代理: 客户端无法直接访问外部的 web, 需要在客户端所在的网络内架设一台代理服务器, 客户端通过代理服务器访问外部的 web(需要在客户端的浏览器中设置代理服务器)

适用于: ①局域网的代理服务器(一般是网关, 相当于 squid 的一般用法)

②访问某个受限网络的代理服务器, 如教育网访问某些国外网站需要找代理

2 反向代理: 客户端能访问外部的 web, 但是不能访问目标 web, 目标 web 所在的网络内一台机器充当目标 web 的代理, 客户端直接访问代理就像访问目标 web 一样(此代理对客户端透明, 即客户端不用做如何设置, 并不知道实际访问的只是代理而已, 以为就是访问的目标)

适用于: ①idc 的某台目标机器只对内开放 web, 外部的客户端要访问, 就让另一台机器做 proxy, 外部直接访问 proxy 即相当于访问目标

②idc 的目标机器的某个特殊的 web 服务跑在非正常端口如 9000, 而防火墙上只对外开放了 80, 此时可在 80 上做 proxy 映射到 9000, 外部访问 80 即相当于 9000

简单示意图如下

Apache 做反向代理服务器

Apache 做反向代理服务器

本例中
机器 192.168.0.114 是我们的 reverse proxy server
apache/2.0.63 运行在其 80 端口
上面有两个域名的虚拟主机
www.a.org
www.b.org
要实现的效果是:
访问 www.a.org 即相当于访问另一台机器 192.168.0.115
访问 www.b.org 即相当于访问本机的 9000 端口
apache 的 proxy 功能由其 proxy 模块实现. 加载模块有两种方式: 静态和动态, 现分别说明:
一 静态加载
静态加载, 在编译 apache 时候编译进去, 编译参数如下:
“./configure” \
“-prefix=/usr/local/apache3” \
“–enable-so” \
“–enable-rewrite” \
“–with-mpm=prefork” \
“–enable-proxy” \ (这个参数即是代理模块启用)
安装完成后查看模块列表
/usr/local/apache3/bin/httpd -l
显示
Compiled in modules:
core.c
mod_access.c
mod_auth.c
mod_include.c
mod_log_config.c
mod_env.c
mod_setenvif.c
mod_proxy.c
proxy_connect.c
proxy_ftp.c
proxy_http.c
prefork.c
http_core.c
…….
编辑配置文件 httpd.conf
在虚拟主机部分
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
ServerName www.a.org
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://192.168.0.115/
ProxyPassReverse / http://192.168.0.115/
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
ServerName www.b.org
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:9000/
ProxyPassReverse / http://127.0.0.1:9000/
</VirtualHost>
二 动态加载
动态加载: 编译进一个已经装好了的 apache 中 (编译为 dso 模块)
已经装好的 apache 在 /usr/local/apache2
进入 apache 源码的模块目录进行编译
cd httpd-2.0.63/modules/proxy/
/usr/local/apache2/bin/apxs -c -i -a mod_proxy.c proxy_connect.c proxy_http.c proxy_util.c
从输出里面看到 apache 的 modules 目录下已经产生了 mod_proxy.so, 且已经在 httpd.conf 中激活了
cd /usr/local/apache2/conf/
ls ../modules/ 看到确实有 mod_prxoy.so
编辑配置文件
vi httpd.conf
修改如下
加载模块
LoadModule proxy_module modules/mod_proxy.so (这句是编译激活时产生的)
LoadModule proxy_http_module modules/mod_proxy.so (这句是要手动添加的)
虚拟主机的部分加上
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
ServerName www.a.org
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://192.168.0.115/
ProxyPassReverse / http://192.168.0.115/
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
ServerName www.b.org
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:9000/
ProxyPassReverse / http://127.0.0.1:9000/
</VirtualHost>
重启 apache 生效
注:
如果不加 LoadModule proxy_http_module modules/mod_proxy.so, 则浏览器页面打不开, 页面显示
Forbidden
You don’t have permission to access / on this server.
日志 acess_log 里面显示
192.168.0.28 – – [03/Jun/2009:16:16:27 +0800] “GET /?sessionId=4293567494722637330&rand=1244014624405&CONTEXT=0&page=com.othe
r.AjaxWhoWhatUpdate&xrand=1244016991554&wwRandId=1244014624405&wwBugId=2341&wwType=View HTTP/1.1″ 403 315
或者
192.168.0.28 – – [03/Jun/2009:17:10:32 +0800] “GET / HTTP/1.1” 403 315
即 403 错误
日志 error_log 里面显示
[Wed Jun 03 17:08:46 2009] [warn] proxy: No protocol handler was valid for the URL /. If you are using a DSO version of mod_p
roxy, make sure the proxy submodules are included in the configuration using LoadModule.

相关阅读

日志分析工具 Awstats 实战之 Apache 篇 - 多站点日志分析 http://www.linuxidc.com/Linux/2013-11/92273.htm

在 Ubuntu 13.10 下安装支持 SSL 的 Apache http://www.linuxidc.com/Linux/2013-11/92266.htm

再谈伪装 Apache 版本防止入侵 Web 服务器 http://www.linuxidc.com/Linux/2013-10/91179.htm

Apache Python 模块 mod_wsgi 的编译安装 http://www.linuxidc.com/Linux/2013-09/90637.htm

企业 Shell 脚本分析及切割 Apache 日志实战 http://www.linuxidc.com/Linux/2013-09/90627.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计3448字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中