
У меня есть...
<VirtualHost example.com:80>
ServerAdmin webmaster@localhost
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
который немедленно переходит к...
<IfModule mod_ssl.c>
<VirtualHost example.com:443>
ServerAdmin webmaster@localhost
ServerName example.com
ServerAlias example.com
DocumentRoot /home/klyde/ror/exampledev/public
SSLCertificateFile /etc/apache2/ssl/certs/123abc.crt
SSLCertificateChainFile /etc/apache2/ssl/certs/gd_bundle-g2-g1.crt
SSLCertificateKeyFile /etc/apache2/ssl/private/examplekey.key
BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLEngine on
SSLProxyEngine On
ProxyRequests On
<Proxy *>
AddDefaultCharset off
#Options Indexes FollowSymLinks
AllowOverride none
<RequireAny>
#<RequireAll>
# Require all granted
#</RequireAll>
<RequireAll>
Require host example.com
</RequireAll>
<RequireAll>
Require local
# Require ip 127.0.0.1
</RequireAll>
</RequireAny>
</Proxy>
ProxyPassReverseCookiePath / /
ProxyPass /errors/ !
ProxyPass /websockets ws://127.0.0.1:8675/
ProxyPassReverse /websockets ws://127.0.0.1:8675/
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
</VirtualHost>
</IfModule>
Когда я включаю...
Require all granted
все работает нормально. Но сайт переполнен фишингом. Я бы хотел...
Require host example.com
Но это приводит к ошибке журнала...
access check of 'example.com' to / failed, reason: unable to get the remote host name
Эту конфигурацию я выбрал, потому что хочу остановить SSL в Apache и ajp в Torquebox. Это работает нормально, за исключением случаев, когда нужно защитить сайт. Конечно, Apache с Torquebox может быть не совсем желательным, целесообразным и т. д. Предложения об обратном приветствуются.
Главный вопрос - Почему ошибка "remote host name". Есть идеи?
решение1
Определение удаленного хоста по имени работает только если удаленный IP-адрес имеет PTR
записи, не все IP-адреса имеют. Если можете, используйте IP-адреса в выписке Require
.
Вы также можете использовать базовую аутентификацию (предпочтительно по протоколу https) для ограничения доступа.
Вам не нужно определять a, proxy
если вам нужна только proxypass
функциональность.
Если вам нужен прокси-сервер, попробуйте ограничить его своим доменом.
<Proxy http://www.example.com/*>
....
</Proxy>
решение2
Я думаю, ты можешь использовать
Require ip 127.0.0.1
с IP вашего сервера вместо локального IP
решение3
Если вы просто хотите все открыть и разрешить запросы с любого IP-адреса, вы можете использовать:
Require all granted
Более подробную информацию можно найти здесь:https://serverfault.com/a/887196/468080