1

我有 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 管理员不再自动进行身份验证。

4

1 回答 1

0

这是由设置文件中设置的 url 重写引起的常见问题FORCE_SCRIPT_NAME = ''

于 2012-09-18T12:29:49.963 回答