如何开启apache虚拟目录反向代理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何开启apache虚拟目录反向代理相关的知识,希望对你有一定的参考价值。

参考技术A 如何开启apache虚拟目录反向代理

现有2个项目,A:php项目,B:java项目。由于域名解析只能使用80端口,因此需要apache来反向代理。apache使用80端口,tomcat使用8080.

apache下httpd.conf中开启以下模块:

# Virtual hosts 加载虚拟主机功能

Include conf/extra/httpd-vhosts.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.soLoadModule vhost_alias_module modules/mod_vhost_alias.so

httpd-vhosts中添加

<VirtualHost *:80>

ServerName yxj.zhoushangang.cn

ProxyPreserveHost On

ProxyRequests Off

ProxyPass / http://localhost:8080/

ProxyPassReverse / http://localhost:8080/

ErrorLog logs/wap.xxx.com_error_log

CustomLog logs/wap.xxx.com_access_log common

</VirtualHost>
参考技术B 如何开启apache虚拟目录反向代理

现有2个项目,A:php项目,B:java项目。由于域名解析只能使用80端口,因此需要apache来反向代理。apache使用80端口,tomcat使用8080.

apache下httpd.conf中开启以下模块:

# Virtual hosts 加载虚拟主机功能

Include conf/extra/httpd-vhosts.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.soLoadModule vhost_alias_module modules/mod_vhost_alias.so

httpd-vhosts中添加

<VirtualHost *:80>

ServerName yxj.zhoushangang.cn

ProxyPreserveHost On

ProxyRequests Off

ProxyPass / http://localhost:8080/

ProxyPassReverse / http://localhost:8080/

ErrorLog logs/wap.xxx.com_error_log

CustomLog logs/wap.xxx.com_access_log common

</VirtualHost>

centos7下apache2.4反向代理

apache安装目录在/data/apache24,这里就不介绍apache的安装了。

一、反向代理配置

在/data/apache24/conf/extra下创建htttpd-proxy.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_balancer_module modules/mod_proxy_balancer.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so

#关闭正向代理
ProxyRequests Off
#设置集群组,mycluster名称可以随意取
<Proxy "balancer://mycluster">
    BalancerMember http://192.168.1.222:8080
    BalancerMember http://192.168.1.233:8080
</Proxy>
#使用集群组,mycluster名称需与上面配置相同
ProxyPass "/demo" "balancer://mycluster/"
ProxyPassReverse "/demo" "balancer://mycluster/"

修改/data/apache24/conf/httpd.conf中添加

Include conf/extra/htttpd-proxy.conf

这样重启apache后,当我们访问网站/demo时,会反向代理到222和233上的8080端口。

 

二、apache负载均衡管理界面

<Location "/balancer-manager">
    SetHandler balancer-manager
    order Deny,Allow
    Deny from all
    Allow from localhost
</Location>

访问网站/balancer-manager时,就可以看到apache自带的一个负载均衡管理界面。

 

三、虚拟主机上配置反向代理

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/test"
    ServerName www.test.com
    ErrorLog "logs/www.test.com-error_log"
    CustomLog "logs/www.test.com-access_log" common
    #当我们访问www.test.com时,都会代理到mycluster集群中。
    ProxyPass "/" "balancer://mycluster/"
    ProxyPassReverse "/" "balancer://mycluster/"
</VirtualHost>

 

四、负载比例分配

loadfactor取值范围为1-100

ProxyRequests Off
<Proxy "balancer://mycluster">
    BalancerMember http://192.168.1.222:8080 loadfactor=6
    BalancerMember http://192.168.1.233:8080 loadfactor=4
    BalancerMember http://192.168.1.244:8080 loadfactor=2
</Proxy>
ProxyPass "/" "balancer://mycluster/"
ProxyPassReverse "/" "balancer://mycluster/"

  

五、负载分配算法

lbmethod取值有:
lbmethod=byrequests 按照请求次数均衡(默认)
lbmethod=bytraffic 按照流量均衡
lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)

ProxyRequests Off
<Proxy "balancer://mycluster">
    BalancerMember http://192.168.1.222:8080 loadfactor=6
    BalancerMember http://192.168.1.233:8080 loadfactor=4
    BalancerMember http://192.168.1.244:8080 loadfactor=2
</Proxy>
ProxyPass "/" "balancer://mycluster/"
ProxyPassReverse "/" "balancer://mycluster/"
ProxySet lbmethod=bytraffic

 

五、热备份

请求总是流向222,一旦222挂掉, apache会检测到错误并把请求分流给233。apache会每隔几分钟检测一下222的状况,如果222恢复,就继续使用222。

ProxyRequests Off
<Proxy balancer://mycluster>
    BalancerMember http://192.168.1.222:8080
    BalancerMember http://192.168.1.233:8080 status=+H
</Proxy>
ProxyPass "/" "balancer://mycluster/"
ProxyPassReverse "/" "balancer://mycluster/"

 

以上是关于如何开启apache虚拟目录反向代理的主要内容,如果未能解决你的问题,请参考以下文章

nginx 反向代理 虚拟二级目录

nginx反向代理增加虚拟目录

用vhost.map 实现APACHE虚拟主机方式(win7环境下)

如何使用基本身份验证保护在 Apache2 虚拟主机中反向代理的 Tomcat webapp?

Apache httpd(apache2)服务配置详解,Mac下设置虚拟主机部署多个web项目,及反向代理部署Java项目

在IIS7中使用ARR(Application Request Routing)反向代理虚拟目录到Nodejs站点