---
slug: "django-http-https-absolute-uri"
title: "Python Social Auth Django とか AllAuth でリダイレクト先のURL が HTTPS でなく HTTP で困った"
description: "Ubuntu / Debian で `apt list --upgradable` の数だけを取得する 1-liner と、シェルスクリプトで `MOTD` (login banner) に出す書き方。"
url: "https://www.ytyng.com/blog/django-http-https-absolute-uri"
publish_date: "2018-07-12T11:24:16Z"
created: "2018-07-12T11:24:16Z"
updated: "2026-05-11T13:21:37.279Z"
categories: ["Django"]
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20230812/bee87ea0cc7d438cb1e027dc30dac52f.png.webp?width=768"
has_video: false
has_music: false
video_urls: []
music_urls: []
lang: "ja"
---

# Python Social Auth Django とか AllAuth でリダイレクト先のURL が HTTPS でなく HTTP で困った

<p>Django Social Auth の Django モジュールや&nbsp;AllAuth&nbsp;のリダイレクト先プロトコルスキームが HTTPS ではなく HTTP になって困った<br />(callback_uri, redirect_uri, destination)</p>
<p></p>
<h2>Django の設定</h2>
<p>URI の作成は、<code>django.http.request.HttpRequest.build_absolute_uri</code> が使われるので、</p>
<p>settings に</p>
<pre>SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')</pre>
<p>を定義する。</p>
<p></p>
<h2>nginx の設定</h2>
<p>nginx が httpsを受けている場合は、nginx の設定は</p>
<pre>location / {<br />    proxy_set_header X-Forwarded-Proto $scheme;<br />    ...</pre>
<p></p>
<p>こんな感じ、</p>
<p>nginxが https ではなく http　で受けている場合、例えば ELBなんかで https を展開している場合は</p>
<pre>location / {<br />    proxy_set_header X-Forwarded-Proto https;<br />    ...</pre>
<p>https のヘッダーを直接渡せばいいかな</p>
<p></p>
<p></p>
