公開日: 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に渡すように設定する必要があります。

手順

  1. SSHでPleskサーバーに接続

    ssh root@your-server-ip
    
  2. 以下のスクリプトを実行(変更なしでそのまま実行)

    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からの公式修正がリリースされるまでの暫定対応として、この方法を使用してください。

もし問題が解決しない場合は、サーバーのログを詳細に確認し、他の要因がないか調査することをお勧めします。

関連記事