环境: httpd 2.4 + Tomcat 8.0
- 修改httpd.conf, 去除注释
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
- 配置httpd-vhosts.conf: 监听8088端口
Listen 8088
<VirtualHost *:8088>
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
ErrorLog "logs/tomcat-error.log"
CustomLog "logs/tomcat-access.log" common
</VirtualHost>
- 测试结果
注意:
ProxyPassReverse : 调整由反向代理服务器发送的HTTP响应头中的URL,也就是对后端服务器返回响应头中的URL信息进行调整,使其指向的是反向代理服务器,而不是真正的后端服务器。因为后端服务器只能通过代理服务器访问,客户端无法访问,如果客户端访问的页面存在重定向请求的话,如果使用后端服务器在前一次请求的响应URL信息,也就是客户端直接访问后端服务器,因为安全考虑这条访问路径是不同的,导致客户端访问失败。如果将前一次请求的URL信息改为反向代理服务器的URL,这样通过反向代理服务器访问后端服务器则不会出现问题。
http负载均衡配置: 改造httpd-vhosts.conf文件:
## 虚拟主机转发端口监听
Listen 8088
<VirtualHost *:8088>
# 取消/server-status,/balancer-manager路径请求代理
ProxyPass /server-status !
ProxyPass /balancer-manager !
<Location /server-status>
SetHandler server-status
Require all granted
</Location>
#设置balancer-manager监控页面
<Location /balancer-manager>
SetHandler balancer-manager
Require all granted
</Location>
# 设置负载均衡器
<Proxy balancer://myBalancer>
BalancerMember http://localhost:8080
ProxySet lbmethod=byrequests
</Proxy>
# 集群模式:请求转发到负载均衡器处理
ProxyPass / balancer://myBalancer
ProxyPassReverse / balancer://myBalancer/
ErrorLog "logs/tomcat-error.log"
CustomLog "logs/tomcat-access.log" common
</VirtualHost>
说明:
使用负载均衡管理器可以将客户端请求通过特定的负载算法,将请求转发给一个应用服务器集群,从而保证系统的高可用特性。
结果验证:
服务器信息页面:
负载均衡器管理页面: