反向代理: 客户端能访问外部的web,但是不能访问目标web,目标web所在的网络内一台机器充当目标web的代理,客户端直接访问代理就像访问目标web一样(此代理对客户端透明,即客户端不用做如何设置,并不知道实际访问的只是代理而已,以为就是访问的目标)。
本例中
机器108.166.222.24是我们的reverse proxy server,apache/2.4.7运行在其80端口。
要实现的效果是:
访问108.166.222.24/a 即相当于访问另一台机器192.168.0.115:8080/a,它是一台内网机器,和reverse proxy server互通,但是不能被外网直接访问。
使用apache的proxy功能可以实现该目标。
环境:Centos服务器
从apache网站上下载http服务器。
tar zxvf httpd-2.4.7.tar.gz
cd httpd-2.4.7
./configure --prefix=/usr/local/apache --enable-track-vars --enable-cgi --with-config-file-path=/usr/local/apache/conf --enable-mods-shared="proxy proxy_http proxy_ftp proxy_connect"
make
make install
如果不缺少依赖包的话,就应该完成,但是可能会遇到缺少apr包。
安装 apr 和apr-util
遇到缺少
pcre-config包的时候的
解决办法:
[root@www.linuxidc.com httpd-2.4.1]# yum -y install pcre-devel
编译好httpd后,去掉 httpd.conf 文件中的
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
这几行的注释。
在 httpd.conf 文件中的最后,添加:
ProxyPass /a http://192.168.0.115:8080/a
ProxyPassReverse /hhmd http://192.168.0.115:8080/a
<proxy http://192.168.0.115:8080/a>
AllowOverride None
Order Deny,Allow
Allow from all
</proxy>
访问http://108.166.222.24/a 时,会重新反向代理访至http://192.168.0.115:8080/a。
重新启动Apache ./apachectl start,看看效果吧。
使用apache的proxy功能可以实现该目标。
环境:Centos服务器
从apache网站上下载http服务器。
tar zxvf httpd-2.4.7.tar.gz
cd httpd-2.4.7
./configure --prefix=/usr/local/apache --enable-track-vars --enable-cgi --with-config-file-path=/usr/local/apache/conf --enable-mods-shared="proxy proxy_http proxy_ftp proxy_connect"
make
make install
如果不缺少依赖包的话,就应该完成,但是可能会遇到缺少apr包。
安装 apr 和apr-util
方法如下:基本和安装apache的方法差不多。
#######安装apr######### |
安装 apr 和apr-util
方法如下:基本和安装apache的方法差不多。
#######安装apr######### |
tar
apr-1.5.0.tar.gz
;
cd
apr-1.5.0;
./configure --prefix=/usr/
local
/apr;
make
;
make
install
;
tar
zxvf
apr-util-1.5.3.tar.gz;
cd
apr-util-1.5.3
;
./configure --with-apr=/usr/
local
/apr;
make
;
make
install
;
rm: cannot remove `libtoolT': No such file or directory。
安装apr的过程中可能会遇到
rm: cannot remove `libtoolT': No such file or directory。
如果遇到上述情况,则vim configure 在30048行 注释 掉$RM "$cfgfile" 重新执行.configure即可。
安装完毕以后重新进入apache解压以后的包执行./configure --prefix=/usr/local/apache --enable-track-vars --enable-cgi --with-config-file-path=/usr/local/apache/conf --enable-mods-shared="proxy proxy_http proxy_ftp proxy_connect" 应该就可以了。
安装完毕以后重新进入apache解压以后的包执行./configure --prefix=/usr/local/apache --enable-track-vars --enable-cgi --with-config-file-path=/usr/local/apache/conf --enable-mods-shared="proxy proxy_http proxy_ftp proxy_connect" 应该就可以了。
[root@www.linuxidc.com httpd-2.4.1]# yum -y install pcre-devel
编译好httpd后,去掉 httpd.conf 文件中的
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
这几行的注释。
在 httpd.conf 文件中的最后,添加:
ProxyPass /a http://192.168.0.115:8080/a
ProxyPassReverse /hhmd http://192.168.0.115:8080/a
<proxy http://192.168.0.115:8080/a>
AllowOverride None
Order Deny,Allow
Allow from all
</proxy>
访问http://108.166.222.24/a 时,会重新反向代理访至http://192.168.0.115:8080/a。
重新启动Apache ./apachectl start,看看效果吧。