如何在Apache Ubuntu中安装mod_proxy,设置反向代理

时间:2019-08-20 17:58:17  来源:igfitidea点击:

模块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