web-dev-qa-db-ja.com

Apacheを使用したIPv6を使用したServerName

基本的に、:443のすべてのリクエストを:443にリダイレクトしようとしています。私はこれを行う方法を見つけました。これは非常にうまく機能します。訪問者がSSLアラートを破棄すると(もちろん、私の証明書は私のIPに対して有効ではありません)、彼は正しくリダイレ​​クトされます。

<VirtualHost *:443>
    SSLEngine off
    ServerAdmin [email protected]
    ServerName 11.11.11.11
    Redirect Permanent / https://domain.eu/
</VirtualHost>

しかし、今日はサーバーでIPv6を有効にしたので、それもリダイレクトしたいのですが、問題はここから始まります。

<VirtualHost *:443>
    SSLEngine off
    ServerAdmin [email protected]
    ServerName [ff:ff:8:ff::1]         //(with or without '[]')
    Redirect Permanent / https://domain.eu/
</VirtualHost>

それは単に機能しません。 ServerName引数でIPv6のサポートが欠落していることが原因かどうかはわかりませんが、ちょっと行き詰まっています。

何か考えはありますか?ありがとう!

1
Komic

私の知る限り、ServerNameディレクティブはIPv6アドレスを許可していません。

IPv6アドレスの角かっこやコロン文字は受け入れられません。

この形式は、Listen、NameVirtualHost、およびVirtualHostディレクティブにのみ有効です。

構成に応じて(つまり、同じApacheインストールで複数のドメインをサーバー化する場合)、次のことを試すことができます。

通常どおりに仮想ホストを作成し、IPv6アドレスでServerNameを定義する代わりに、適切なDNS名(実際に存在する必要はありません)で定義します。
ここでの秘訣は、このvhostをそのIP:Portの他のすべてのvhostの上に配置することです。

そうすれば、ユーザーがApacheで処理されていないドメイン(またはこの場合はIP)を要求すると、そのIP:Portで最初に見つかったVirtualHostを使用して要求を処理しようとします。

0
Cha0s

まず、「[」および「]」はDNS命名規則には無効であり、ServerName値で満たす必要があります。次に、「:」も無効です。そのため、その記号なしで使用するか、ホスト名を使用してみてください。2番目の方法の方が適しています。

0
Alexey Vesnin

これを試しましたか?

Listen [ff:ff:8:ff::1]:80;
<VirtualHost [ff:ff:8:ff::1]:443>
    SSLEngine off
    ServerAdmin [email protected]
    Redirect Permanent / https://domain.eu/
</VirtualHost>

リスニングアドレスに応じてリクエストを処理します。

0
Vitaly Greck