Apache と、Apache 以外のカスタム Web サービスが同じサーバー上で実行されています。ブラウザにアドレスを入力して私のサイトにアクセスしたときに SSL 警告が表示されないように、Apache で他のサイトへの SSL 接続をリバース プロキシするように設定しようとしています (https://xx.xx.xx.xx)。このような状況では、証明書の警告を防ぐために、リクエストが自動的に FQDN リクエストに変更されるようにしたいと思います。
私のサイトはカスタム サービス (Apache ではない) で実行されており、これを阻止する機能がありません。私の計画は、Apache を 443 でリッスンし、同じボックスのポート 80 にリダイレクトするように設定し、なんらかの書き換えルールを使用して直接 IP アクセスを防止するか、リダイレクトすることです。
その部分は問題なく動作しますが、IP への直接リクエストは名前のリクエストに自動的にリダイレクトされません。ポート 8080 で部分的に動作するテスト構成を以下に示します。
<VirtualHost *:8080>
ServerName fqdn
SSLEngine On
SSLCertificateFile /etc/httpd/ssl/Cert.crt
SSLCertificateKeyFile /etc/httpd/ssl/Key.key
SSLCertificateChainFile /etc/httpd/ssl/TrustedRoot.crt
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://fqdn:80/
ProxyPassReverse / http://fqdn:80/
ErrorLog logs/myserver-error_log
CustomLog logs/myserver-access_log common
</VirtualHost>
いくつかの書き換えディレクティブを試してみましたが、あまり成功しませんでした。また、JavaScript リダイレクトでは SSL エラーを防ぐことができません。何かアイデアはありますか?
答え1
外部からアクセスできないポート (たとえば 8888) でリッスンするようにサービスを変更します。Apache はすべての受信リクエストを処理し、望ましくないリクエストに対してはリダイレクト (書き換え) を送信します。満足できるリクエスト (たとえば FQDN) は次のとおりです。
ProxyPass / http://127.0.0.1:8888/
ProxyPassReverse / http://127.0.0.1:8888/
安全なリクエスト (https/SSL) 用にポート 443 に仮想ホストを追加し、FQDN を使用せずにシステムに送信されるリクエスト用にデフォルト サーバーを追加します。