如何在Apache Ubuntu中安装mod_proxy,设置反向代理
模块mod_proxy是Apache WebServer中支持正向和反向代理设置的核心模块。
在apache web服务器中还需要其他模块,例如
mod_proxy_http、mod_proxy_ftp、mod_proxy_ajp、mod_proxy_balancer和mod_proxy_connect
反向代理广泛用于访问位于防火墙。
反向代理可以在后端服务器之间负载平衡请求,也可以缓存完成了。
主要是, 反向代理可以简单地将多个服务器放入同一个URL空间。
今天在本教程中,我们将学习如何安装apache代理模块以及如何设置反向代理。
使用反向代理的场景
场景1:
假设我们有一个Web服务器,它有公共ip地址和DNS记录.
可以使用http://example.com 访问服务器。
我们有一些内部web服务器,假设分别是internalwebserver1,internalwebserver2和internalwebserver3。
不能直接从公共互联网访问内部web服务器,
因为它们都是私有IP,而且在防火墙后面。
即如果有人试图访问这些内部服务器,它将得到错误:没有这样的主机。
但是有一些重要的web应用或者网页是通过内部web服务器提供服务的,需要和example.com网站进行映射.
所以在这种情况下,我们将可以反向代理服务器。
如果有任何example.com请求到达Web服务器, 它将在配置文件中检查映射到其内部Web服务器的路径。
场景2:
我有一个OpenERP服务器,运行在端口号8069,例如。http://openrp.example.com:8069
但我想打开网站openerp.example.com时的默认为端口号80。
在这种情况下,我们也可以在单个openerp服务器中设置反向代理。
在Apache Webserver中安装mod_proxy和设置反向代理
注意:在下面给出的所有示例中,根据服务器信息替换 ServerAdmin,ServerName&ServerAlias的值
安装模块
sudo apt-get install libapache2-mod-proxy-html
安装依赖关系包libxml2-dev
apt-get install libxml2-dev
加载模块
a2enmod proxy proxy_http
在apache配置文件中创建虚拟主机。
如果配置位于conf.d中,则必须对该文件进行更改。我在Ubuntu的apache web服务器中给出了一个默认设置的例子
vi /etc/apache2/sites-enabled/000-default
VirtualHost标记中粘贴下面两行
ProxyPass /foo http://internalwebserver1.example.com/give/path/of-requested-location ProxyPassReverse /foo http://internalwebserver1.example.com/give/path/of-requested-location
这是我的配置文件:
<VirtualHost *:80> ServerAdmin [email protected] ServerName example.com ServerAlias example.com ProxyPass /foo http://internalwebserver1.example.com/files/webapp ProxyPassReverse /foo http://internalwebserver1.example.com/files/webapp </VirtualHost>
重启apache
/etc/init.d/apache2 restart
测试
打开浏览器测试 http://example.com
如果是场景2:
除了 步骤4中的步骤外,请按照上述所有步骤进行操作
步骤4配置文件参考
<VirtualHost *:80> ServerAdmin [email protected] ServerName openerp.example.com ServerAlias openerp.example.com ProxyPass / http://openerp.example.com:8069 ProxyPassReverse / http://openerp.example.com:8069 </VirtualHost>
重启apache2,打开浏览器测试
/etc/init.d/apache2 restart