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

我之所以选择此配置,是因为我想停止 Apache 中的 SSL 和 Torquebox 的 ajp。除了尝试保护站点之外,此配置工作正常。当然,Apache 与 Torquebox 可能并不完全理想、可取,等等。欢迎提出相反的建议。

主要问题 - 为什么会出现“远程主机名”错误。有什么想法吗?

答案1

仅当远程 IP 地址有PTR记录时,通过名称确定远程主机才有效,并非所有 IP 地址都有记录。如果可以,请在语句中使用 IP 地址Require

您还可以使用基本身份验证(最好通过 https)来限制访问。

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

相关内容