Nginx プロキシとリモート認証バックエンドで構成された Django 1.4 があります。
プロキシは、django アプリをサブドメインとして、認証サーバーをサブドメインとしてサーバーするように構成されているため、次のようになります。
djangoapp.domain.com
auth.domain.com
初めてdjangoappにアクセスすると、認証ドメインにリダイレクトされて認証され、djangoappドメインに戻ります。この部分は、サブドメインに設定されたnginxプロキシヘッダーで正常に機能します
server {
listen 443;
ssl on;
server name djangoapp.domain.com;
location / {
proxy_pass http://djangoapp
proxy_set_header Host $host;
}
}
proxy_set_header ホスト $host; を使用します。認証を設定すると機能し、それを削除すると認証が壊れます。Djangoを修正するための回避策としてこれを示唆する他の解決策を見たことがありますが、この場合はうまくいきません。
この問題は、主に管理インターフェイスに関するものです。管理サイトにアクセスしようとすると、django は無効な URL にリダイレクトしようとします。たとえば、次の URL を手動で入力します。
https://djangoapp.domain.com/admin
にリダイレクトします
https://djangoapp.domain.com/.domain.com/admin
django が相対 URL を使用せずに部分 URL をリダイレクトしようとする理由を理解しようとしています。
奇妙なリダイレクトを停止するdjangoの一般的なミドルウェアを無効にしようとしましたが、これを無効にすると、django管理者は自動的に認証されなくなります。