公開日: 2025/1/11Fivenine Design
Plesk + Apache環境で発生する「421 Misdirected Request」エラーの解決方法
PleskApachenginxSSLエラー対処サーバー管理
最近のApacheアップデート後、Plesk環境で「421 Misdirected Request」というエラーが発生するケースが報告されています。 このエラーは日本語での情報が少ないため、今回は原因と解決方法を詳しく解説します。
エラーの症状
このエラーが発生すると、以下のような症状が現れます:
- すべてのWebサイトで「421 Misdirected Request」エラーが表示される
- ドメインのログ(Plesk > ドメイン > example.com > ログ)に以下のエラーメッセージが記録される:
AH02032: Hostname default-203_0_113_2 (default host as no SNI was provided)
and hostname www.example.com provided via HTTP have no compatible SSL setup
エラーの原因
最新のApacheバージョンでは、CVE(共通脆弱性識別子)に対する修正が含まれており、これがApache + nginxの機能に影響を与えています。
具体的には:
- Apacheがnginxからサーバー名なしのリクエストを処理できなくなった
- デフォルトでは、nginxはプロキシされたHTTPSサーバーへの接続を確立する際、SNI(Server Name Indication)経由でサーバー名を渡さない
この変更により、nginxからApacheへの通信が正しく行われず、421エラーが発生します。
解決方法
この問題を解決するには、nginxの設定にproxy_ssl_server_nameとproxy_ssl_nameディレクティブを追加し、TLS Server Name Indication (SNI)拡張を通じてサーバー名をApacheに渡すように設定する必要があります。
手順
-
SSHでPleskサーバーに接続
ssh root@your-server-ip
-
以下のスクリプトを実行(変更なしでそのまま実行)
echo -e "proxy_ssl_server_name on;\nproxy_ssl_name \$host;" > /etc/nginx/conf.d/fixssl.conf && service nginx restart
このコマンドは以下の処理を行います:
/etc/nginx/conf.d/fixssl.conf
ファイルを作成proxy_ssl_server_name on;
とproxy_ssl_name $host;
を設定- nginxサービスを再起動
設定の詳細説明
proxy_ssl_server_name ディレクティブ
このディレクティブをon
に設定することで、nginxがプロキシされたHTTPSサーバーへの接続時にSNIを有効にします。
proxy_ssl_name ディレクティブ
$host
変数を使用して、実際のホスト名をSNI経由でApacheに渡します。
注意事項
- この修正は一時的な対処法です
- Plesk開発チームが公式な修正を準備中です(Obsidian 18.0.70および18.0.71向け)
- 公式アップデートがリリースされたら、適用することをお勧めします
まとめ
このエラーは最新のApacheのセキュリティ修正に起因する互換性の問題です。 上記の設定を追加することで、問題を解決できます。 Pleskからの公式修正がリリースされるまでの暫定対応として、この方法を使用してください。
もし問題が解決しない場合は、サーバーのログを詳細に確認し、他の要因がないか調査することをお勧めします。