У меня есть Apache и пользовательский веб-сервис, не относящийся к Apache, работающий на одном сервере. Я пытаюсь заставить Apache использовать обратный прокси-сервер для SSL-соединений с другим сайтом, чтобы предотвратить появление предупреждений SSL, когда кто-то заходит на мой сайт, вводя адрес в своем браузере (https://xx.xx.xx.xx). Я бы хотел, чтобы запрос автоматически изменялся на запрос FQDN при таких обстоятельствах, чтобы предотвратить предупреждения о сертификатах.
Мой сайт работает на пользовательской службе (не Apache), и у него нет возможности остановить это. Мой план — настроить Apache на прослушивание 443 и перенаправление на порт 80 на том же ящике и использовать какое-то правило перезаписи, чтобы предотвратить прямой доступ по IP или перенаправить его.
Я могу заставить эту часть работать нормально, но запросы напрямую к IP не перенаправляются автоматически на запросы имени. Частично рабочая тестовая конфигурация на порту 8080 приведена ниже.
<VirtualHost *:8080>
ServerName fqdn
SSLEngine On
SSLCertificateFile /etc/httpd/ssl/Cert.crt
SSLCertificateKeyFile /etc/httpd/ssl/Key.key
SSLCertificateChainFile /etc/httpd/ssl/TrustedRoot.crt
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://fqdn:80/
ProxyPassReverse / http://fqdn:80/
ErrorLog logs/myserver-error_log
CustomLog logs/myserver-access_log common
</VirtualHost>
Я пробовал некоторые директивы перезаписи, но особого успеха не добился. Также перенаправления javascript не предотвратят ошибки SSL. Идеи?
решение1
Измените свою службу так, чтобы она прослушивала порт, недоступный извне, например 8888. Apache должен обрабатывать каждый входящий запрос, отправляя перенаправление (rewrite) для тех, которые вам не нравятся. Те, которые удовлетворяют, например, FQDN:
ProxyPass / http://127.0.0.1:8888/
ProxyPassReverse / http://127.0.0.1:8888/
Добавьте виртуальный хост на порту 443 для защищенных запросов (https/SSL) и сервер по умолчанию для тех запросов, которые поступают в вашу систему без использования полного доменного имени.