Изображения не загружаются с помощью балансировщика нагрузки httpd и обратного прокси - PullRequest
0 голосов
/ 29 сентября 2018

Я настроил 3 контейнера Docker с HTTPD, которые показывают очень простые веб-страницы в качестве иллюстрации:

  • балансировщик - в качестве балансировщика нагрузки для двух внутренних серверов (httpd1и httpd2)
  • httpd1 - веб-сервер № 1 (показывает фотографию Мег Гриффин)
  • httpd2 - веб-сервер № 2 (показывает фотографию Криса Гриффин)

Simple network diagram

Обратные прокси в файле httpd.conf работают нормально.

Сейчас я пытаюсь отсортировать балансировщик нагрузки, который позволяет пользователю перейти на / griffin, который будет произвольно отправлять их на веб-сервер № 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>

Выполнение запроса GET для http://192.168.99.100:8080/griffin приводит к:

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"

Если каждый веб-сервер (httpd1 и httpd2) содержит изображения, он все равно не будетработа, которая предполагает, что это может быть проблема переписывания URL.Однако именно поэтому балансировщик нагрузки использует обратные прокси.Я также пытался ссылаться на серверы httpd1 и httpd2 непосредственно в конфигурации балансировки нагрузки, но безрезультатно.

Любая помощь будет принята с благодарностью, поскольку я не в себе.

...