У меня есть собственный сервер, работающий за обратным прокси-сервером apache. Поскольку настраиваемый сервер может обрабатывать только HTTP-трафик, я пытаюсь использовать apache для обертывания вокруг него надлежащего SSL и для какой-то HTTP-аутентификации.
Поэтому я включил mod_proxy и mod_ssl и изменил sites-available / default-ssl. Конфигурация следующая:
<Location /server>
order deny,allow
allow from all
AuthType Basic
AuthName "Please log in"
AuthUserFile /etc/apache2/htpasswd
Require valid-user
ProxyPass http://192.168.1.102:8181/server
ProxyPassReverse http://192.168.1.102:8181/server
</Location>
Пользовательский сервер доступен из внутренней сети через местоположение, указанное в директиве ProxyPass.
Однако, когда к прокси-серверу обращаются извне, он представляет приглашение входа в систему, и после успешной аутентификации я получаю пустую страницу со словами The resource can be found at http://192.168.1.102:8181/server
. Когда я снова набираю внешний URL-адрес в уже аутентифицированном экземпляре браузера, я правильно перенаправляюсь на интерфейс сервера.
В access.log много записей о том, что мой браузер успешно выполняет запросы GET, а прокси-сервер успешно обслуживает ресурс / server. Однако ресурс содержит не интерфейс сервера, а эту пустую страницу с этими словами.
После некоторого расследования мне стало ясно, что только Google Chrome показывает такое поведение. Safar и Firefox перенаправляли нормально. Поскольку я не предполагал, что Google создал свой браузер с такой «функцией», а другие нет, я проверил свои расширения. И: у меня было установлено одно расширение под названием «HTTPS Everywhere». Вот в чем дело. После отключения этого расширения все работает как надо.