我已经设置了3个带有HTTPD的Docker容器,它们显示了非常简单的网页作为插图:
-
balancer - 充当两个后端服务器(httpd1和httpd2)的负载均衡器
-
httpd1 - 网络服务器#1(显示梅格里芬的图片)
-
httpd2 - 网络服务器#2(显示Chris Griffin的图片)
httpd.conf文件中的反向代理工作正常 .
我现在正在尝试整理一个负载均衡器,它允许用户转到/ griffin,它会将它们任意地发送到Web服务器#1或#2(即httpd1或httpd2),从而向用户显示克里斯或梅格的照片 .
负载均衡器的工作原理是它确实会导致页面被加载,但图像丢失了 .
# --------------------------------------------------------------------
# Simple reverse proxies
# --------------------------------------------------------------------
ProxyRequests Off
RewriteEngine On
RewriteRule ^/chris$ /chris/ [R]
<Location /chris>
ProxyPass http://httpd1:80/
ProxyPassReverse http://httpd1:80/
ProxyHTMLEnable On
ProxyHTMLURLMap http://httpd1:80/ /chris/
ProxyHTMLURLMap / /chris/
</Location>
RewriteRule ^/meg$ /meg/ [R]
<Location /meg>
ProxyPass http://httpd2:80/
ProxyPassReverse http://httpd2:80/
ProxyHTMLEnable On
ProxyHTMLURLMap http://httpd2:80/ /meg/
ProxyHTMLURLMap / /meg/
</Location>
# --------------------------------------------------------------------
# Load balancer
# --------------------------------------------------------------------
<Proxy balancer://mycluster>
BalancerMember http://localhost:8080/chris
BalancerMember http://localhost:8080/meg
ProxySet lbmethod=byrequests
</Proxy>
RewriteRule ^/griffin$ /griffin/ [R]
ProxyPass "/griffin/" "balancer://mycluster"
ProxyPassReverse "/griffin/" "balancer://mycluster"
<Location "/balancer-manager">
SetHandler balancer-manager
</Location>
对http://192.168.99.100:8080/griffin执行GET请求会产生:
192.168.99.1 - - [29/Sep/2018:11:28:52 +0000] "GET /griffin/ HTTP/1.1" 200 302 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
127.0.0.1 - - [29/Sep/2018:11:28:52 +0000] "GET /chris/ HTTP/1.1" 200 302 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
192.168.99.1 - - [29/Sep/2018:11:28:53 +0000] "GET /griffin/chris-griffin.jpg HTTP/1.1" 500 528 "http://192.168.99.100:8080/griffin/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
如果每个Web服务器(httpd1和httpd2)包含图像,它仍然不起作用,这表明它可能是URL重写问题 . 但是,这就是负载均衡器使用反向代理的原因 . 我也尝试在负载均衡配置中直接引用httpd1和httpd2服务器,但无济于事 .
任何帮助将非常感激,因为我超出了我的深度 .