Apache не может получить имя удаленного хоста

Apache не может получить имя удаленного хоста

У меня есть...

<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

Связанный контент