Apache no puede obtener el nombre del host remoto

Apache no puede obtener el nombre del host remoto

Tengo...

<VirtualHost example.com:80>
    ServerAdmin webmaster@localhost
    ServerName example.com

    Redirect permanent / https://example.com/
</VirtualHost>

que va inmediatamente a...

<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>

Cuando habilito...

Require all granted

todo funciona bien. Pero el sitio está invadido por phishing. Me gustaría...

Require host example.com

Pero esto resulta en un error de registro...

access check of 'example.com' to / failed, reason: unable to get the remote host name

Elegí esta configuración porque quiero detener SSL en Apache y ajp a Torquebox. Esto funciona bien, excepto cuando se intenta proteger el sitio. Por supuesto, Apache con Torquebox puede no ser del todo deseable, aconsejable, etc. Se aceptan sugerencias en sentido contrario.

Pregunta principal: ¿Por qué aparece el error 'nombre de host remoto'? ¿Algunas ideas?

Respuesta1

Determinar el host remoto por su nombre solo funciona si la dirección IP remota tiene PTRregistros, no todas las direcciones IP los tienen. Si puede, utilice direcciones IP en la Requiredeclaración.

También puede utilizar la autenticación básica (preferiblemente a través de https) para restringir el acceso.

No debería necesitar definir a proxysi lo único que desea es proxypassfuncionalidad.

Si necesita utilizar un proxy, intente restringirlo a su dominio.

<Proxy http://www.example.com/*>
    ....
</Proxy>

Respuesta2

creo que puedes usar

Require ip 127.0.0.1

con IP de su servidor en lugar de la IP local

Respuesta3

Si solo desea abrir las cosas y permitir solicitudes provenientes de cualquier IP, puede usar:

Require all granted

Puedes buscar aquí para más información:https://serverfault.com/a/887196/468080

información relacionada