我有 Django 1.4 配置了 Nginx 代理和远程身份验证后端。
代理配置为将 django 应用程序作为子域提供服务,将身份验证服务器作为子域提供服务,因此我们有:
djangoapp.domain.com
auth.domain.com
第一次访问 djangoapp 时,它会重定向到 auth 域进行身份验证,然后返回 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。例如手动输入网址:
https://djangoapp.domain.com/admin
重定向到
https://djangoapp.domain.com/.domain.com/admin
我试图理解为什么 django 试图重定向部分 url 而不是使用相对 url?
我已经尝试禁用 django 中的通用中间件来停止奇怪的重定向,但是通过禁用它,django 管理员不再自动进行身份验证。