kusanagi restart 後にHTTPSリダイレクトループが発生する
TOP › Forums › バグ報告と提案(Requests and Feedback) › kusanagi restart 後にHTTPSリダイレクトループが発生する
kusanagi restart 後にHTTPSリダイレクトループが発生する
- This topic has 6 replies, 2 voices, and was last updated 2 weeks, 4 days ago by
hirasawa3.
-
AuthorPosts
-
-
2026年8月27日 at 03:39 #1697
AlmaLinux 9 / KUSANAGI 9.11.2 / httpd-behind-nginx 構成です。
9.9.0から9.11.2へdnf upgrade後、kusanagi restart が実行されると、
全profileでHTTPSの301リダイレクトループが発生しました。調査したところ、kusanagi restart 時に
/etc/opt/kusanagi/httpd/conf.with_nginx.d/*.conf
が再生成され、backendの *:8000 VirtualHost にもRewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]が生成されていました。
nginxからApache:8000へはHTTPでproxyされるため、HTTPSアクセスでも
Apache側では %{HTTPS}=off となり、同一HTTPS URLへの301が発生します。9.9.0時の正常な生成済み設定では、同箇所は RewriteEngine Off でした。
また9.11.2では kusanagi restart のtest処理で全profile設定が再生成されることを確認しています。
実際に kusanagi restart だけで現象を再現できました。暫定的に、source側のredirect条件へ
X-Forwarded-Proto=https かつ proxy接続元127.0.0.1の場合を除外することで回避しています。9.11.2の httpd-behind-nginx における設定生成処理の不具合ではないかと考えています。
ご確認いただけますでしょうか。 -
2026年8月27日 at 08:46 #1698
hirasawa3さん
/etc/opt/kusanagi/httpd/httpd-with_nginx.conf に以下の記述があるかを確認いただけますか
SetEnvIf X-Forwarded-Proto "^https$" HTTPS
httpd-behind-nginxの場合にはproxyがX-Forwarded-Protoをnginx側で設定します。
そのため、この条件に従ってnginxにHTTPSでアクセスがあったものはHTTPSが設定されます。
HTTPSが設定されていればhttpd側のご指摘のrewriteルールは RewriteCond %{HTTPS} off が成立しないので
通らないようになっています。 -
2026年8月27日 at 11:23 #1699
hideishiさん
ご回答ありがとうございます。
確認したところ、/etc/opt/kusanagi/httpd/httpd-with_nginx.conf には
SetEnvIf X-Forwarded-Proto "^https$" HTTPS
の記述があり、setenvif_module もロードされています。ただし、問題発生時の設定でApache:8000へ直接
X-Forwarded-Proto: https
を付与してアクセスしても、RewriteCond %{HTTPS} off によりApache自身からHTTPSへの301が返ることを確認しています。Apache公式ドキュメントでは、%{HTTPS} は環境変数ではなくmod_sslを直接参照し、TLSをreverse proxyで終端している場合はbackendで常にoffとなるため、%{HTTP:X-Forwarded-Proto} を確認するよう記載されています。
SetEnvIf で設定した環境変数をmod_rewriteから参照する場合は %{ENV:HTTPS} になる認識ですが、KUSANAGI側では SetEnvIf ... HTTPS が %{HTTPS} に反映される独自の仕組み等がありますでしょうか。
念のためご確認いただけますと幸いです。
-
2026年8月27日 at 14:40 #1700
hirasawa3さん
再現確認できました。
確かに %{HTTPS} は実際にsslで接続されないと設定されないようですね。短期的な回避策としては /etc/opt/kusanagi/httpd/conf.d/PROFILE.conf の中にある RewriteEngine On を Off にしてください。
/etc/opt/kusanagi/httpd/conf.with_nginx.d/PROFILE.conf は上記を雛形に生成するので、上記がOffなら自動的にOffになります。
おそらく元はOffだったものが https redirect などを設定してOnに変わったのではないでしょうか。
9.10.0以降では雛形から設定の変更を自動反映するようになりましが。
その結果、変更を拾ってしまって On になったのだと考えられます。RewrireRuleのリダイレクト処理自体がApache:8000側にそもそも不要なので、自動反映する際に該当ディレクティブを削除するように修正します。
報告ありがとうございました。 -
2026年8月27日 at 15:00 #1701
hideishiさん
ご確認いただき、ありがとうございました。
ご対応をよろしくお願いいたします。 -
2026年8月28日 at 10:29 #1703
hirasawa3さん
9.11.3-1 で修正しました。
アップデートしてご確認ください。 -
2026年8月29日 at 22:26 #1710
hideishiさん
アップデートして正常を確認しました。
ご対応いただきありがとうございました。
-
-
AuthorPosts
- You must be logged in to reply to this topic.
