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 を停止したいからです。これは、サイトをセキュリティ保護しようとする場合を除いて、問題なく動作します。もちろん、Torquebox を使用した Apache は、必ずしも望ましい、推奨できる、などというわけではありません。反対の提案は歓迎します。

主な質問 - 「リモート ホスト名」エラーが発生するのはなぜですか。何かアイデアはありますか?

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

関連情報