【Django】SECURE_SSL_REDIRECTの設定で「err_too_many_redirects」が発生した場合の解消方法【nginx】

カテゴリ:Django 投稿:2022年6月16日23:37、更新:2022年6月24日0:15

・記事の概要 

Djangoでsetting.pyにSECURE_SSL_REDIRECT=Trueとしたら「err_too_many_redirects」が発生してしまった場合の解消方法を記載します。

nginx設定も少し編集し本番環境でエラーの解消もHTTPSリダイレクトも可能にします。


・この記事でできるようになること 

SECURE_SSL_REDIRECT= False」にすれば回避もできるのですが、おそらくはhttpのアクセスをhttpsにリダイレクトさせたいという背景だと思うので、それも満たした上での方法での解消方法を記載します。

なのでSECURE_SSL_REDIRECT= True」のままで追記をしていきます。


・実際の手順 

①そもそもの原因は何か

SECURE_SSL_REDIRECT= True」によって、HTTPリクエストはHTTPSに変換されるのですが、Djangoとプロキシ間で再度HTTPになってしまい変換の無限ループのような状態になってしまっています。


②setting.pyを編集

この状態を解消するためにsetting.pyに以下を追記します。

SECURE_SSL_REDIRECT = True
#以下を追記
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')


③nginxの.conをf編集

また「/etc/nginx/conf.d/」配下のxxxx.confに以下を追記します。

location / {
        ...
        #以下を追記
        proxy_set_header X-Forwarded-Proto https;
}


④再起動

nginxとアプリケーションをそれぞれ再起動してください。

再起動後にエラーが発生していないこと、httpアクセスしhttpsリダイレクトをされていることを確認してみてください。


・まとめ 

いかがだったでしょうか。

httpのアクセスをhttpsにリダイレクトさせるケースで「SECURE_SSL_REDIRECT= True」にすればいいよ的な記事はみるのですが、それによってプロキシ間とのやりとりにおけるエラーや解消方法についての記事があまりなかったので今回書いてみました。

皆様のエラーが解消されていれば何よりです。


コメント一覧

コメント投稿ページへ


書いている人

のぎ
PG->SE->PMとして働き、現在はIT企業で新卒採用の担当をしています。長期育休取得明けで0歳娘の対応に毎日バタバタです。笑
採用業務をしつつ社内利用ツールなど作成しており、当ブログも勉強の一環でコーディングして作成しています。 エンジニア領域、人事・採用領域、育児関連など発信していきます。