
Я пытаюсь создать прокси-сервер на URL моего "главного" сайта на удаленный сайт, "восток", но я застреваю в цикле перенаправления. Это не то поведение, которого я ожидал - я понимал, что ProxyPass перепишет содержимое в URL, но я думаю, что он действует так, как будто перенаправляет на "главный" хост.
Применяемый файл конфигурации довольно прост:
user@master:/etc/apache2/conf-enabled# cat multisite_proxy.conf
<Location /prod_east>
ProxyPass http://east.domain.com/prod_east
ProxyPassReverse http://east.domain.com/prod_east
</Location>
при использовании cURL мой вывод выглядит так:
user@master:~# curl -IL https://master.domain.com/prod_east/
HTTP/1.1 302 Found
Date: Thu, 17 Dec 2020 22:58:41 GMT
Server: Apache/2.4.38 (Debian)
Location: https://master.domain.com//prod_east/
Content-Type: text/html; charset=iso-8859-1
...
curl: (47) Maximum (50) redirects followed
В журналах Apache на востоке отображаются запросы cURL.
Если я просматриваю, http://east.domain.com/prod_east
меня перенаправляют на страницу входа в приложение (чего я и ожидал). Проверяя это с помощью cURL, я вижу:
user@master:~# curl -IL http://east.domain.com/prod_east
HTTP/1.1 302 Found
Date: Thu, 17 Dec 2020 23:17:38 GMT
Server: Apache/2.4.38 (Debian)
Location: https://east.domain.com//prod_east
Content-Type: text/html; charset=iso-8859-1
HTTP/1.1 302 Found
Date: Thu, 17 Dec 2020 23:17:38 GMT
Server: Apache
Location: https://east.domain.com/prod_east/subpath/
Content-Type: text/html; charset=iso-8859-1
HTTP/1.1 302 FOUND
Date: Thu, 17 Dec 2020 23:17:38 GMT
Server: Apache
Vary: Cookie
Cache-Control: no-cache
**Location: /prod_east/subpath/login.py?_origtarget=index.py**
Content-Type: text/html; charset=UTF-8
Последняя запись Location: заставляет меня задуматься: она говорит клиенту перенаправить на /prod_east/
, но я ожидаю, что запрос будет сделан из east.domain.com
-за правил ProxyPass.
Модуль Proxy включен, как и модуль перезаписи.
Есть помощь? Я явно чего-то не понимаю...
Заранее спасибо.
решение1
Проблема здесь была в том, что сайт "east" принудительно перенаправлял на HTTPS, а Apache не был настроен на проксирование содержимого TLS. После включения SSLProxy на "master" и обновления multisite_proxy.conf
для ссылки на https (таким образом пропуская перенаправление HTTP->HTTPS) это теперь работает.