ユーザ用ツール

サイト用ツール


apache:apache_の_ver._up_でリバースプロキシが動かなくなった話

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
apache:apache_の_ver._up_でリバースプロキシが動かなくなった話 [2025/03/15 10:36] ? a-gotaapache:apache_の_ver._up_でリバースプロキシが動かなくなった話 [2025/03/15 10:38] (現在) ? a-gota
行 45: 行 45:
 リバースプロキシは複数のドメインで共有しており、宅内サーバへリバースプロキシをかけるにあたってはそれぞれのドメインごとに個別の URI(こっちはこっちで ''VirtualHost'' だったりするのだが)へ転送するため、''RewriteCond'' 直後の ''RewriteRule'' でアクセス時のホスト名をパスへ連結し、それをさらに以降の ''RewriteRule'' でパターンに従って加工して転送するという形。ちなみに、ルールの 13・14 行目は転送先が同じだが、これは外部からのアクセス時にパスの「''/dokuwiki/''」を省略してもいいようにするためのもの。dokuwiki が生成するリンクには「''/dokuwiki/''」が含まれていたりするので、どちらでも同じ場所にアクセスできるようにしている。 リバースプロキシは複数のドメインで共有しており、宅内サーバへリバースプロキシをかけるにあたってはそれぞれのドメインごとに個別の URI(こっちはこっちで ''VirtualHost'' だったりするのだが)へ転送するため、''RewriteCond'' 直後の ''RewriteRule'' でアクセス時のホスト名をパスへ連結し、それをさらに以降の ''RewriteRule'' でパターンに従って加工して転送するという形。ちなみに、ルールの 13・14 行目は転送先が同じだが、これは外部からのアクセス時にパスの「''/dokuwiki/''」を省略してもいいようにするためのもの。dokuwiki が生成するリンクには「''/dokuwiki/''」が含まれていたりするので、どちらでも同じ場所にアクセスできるようにしている。
  
-ここで、上記のログを見ていくと、2 行目でホスト名をパスに連結していることが判る(上記ルールの 12 行目の処理)。しかし、その次の行(= ''add root prefix:'' の行)におかしなことが書かれており、先頭に「''/''」が勝手に付加されている。これにより、ルールの 13・14 行目のパターンにマッチしなくなってしまい、最終的に最後のルールに従って意図しない URI が生成されてしまっていた。+ここで、上記のログを見ていくと、2 行目でホスト名をパスに連結していることが判る(上記ルールの 12 行目の処理)。しかし、その次の行(=''add root prefix:''の行)におかしなことが書かれており、先頭へ勝手に「''/''」が付加されている。これにより、ルールの 13・14 行目のパターンにマッチしなくなってしまい、最終的に最後のルールに従って意図しない URI が生成されてしまっていた。
  
 https://access.redhat.com/solutions/7082162 によると、この変更はセキュリティ上の要件だったようなのだが、今後恒久的なものとなるかどうか若干不透明な気もする。そこで、もし突然元の挙動に戻ってしまっても問題が発生しないよう、先頭に「''/''」が付加されるか否かに関わらず動作する以下のルールに変更した。 https://access.redhat.com/solutions/7082162 によると、この変更はセキュリティ上の要件だったようなのだが、今後恒久的なものとなるかどうか若干不透明な気もする。そこで、もし突然元の挙動に戻ってしまっても問題が発生しないよう、先頭に「''/''」が付加されるか否かに関わらず動作する以下のルールに変更した。
apache/apache_の_ver._up_でリバースプロキシが動かなくなった話.txt ? 最終更新: 2025/03/15 10:38 by a-gota