2012-09-18 38 views
1

我有配置了Nginx代理和遠程認證後端的Django 1.4。Django Nginx的子域管理員重定向錯誤

代理被配置到服務器的Django應用程序作爲一個子域和認證服務器作爲一個子域,所以我們有:

djangoapp.domain.com 
auth.domain.com 

當visting首次將其重定向到身份驗證域認證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 $ host;設置認證工作,刪除它打破認證。我看到其他解決方案建議這是一個解決Django的工作,但這不會在這種情況下工作。

該問題主要圍繞管理界面。如果您嘗試訪問管理網站,django會嘗試重定向到無效的網址。例如手動輸入網址:

https://djangoapp.domain.com/admin 

重定向到

https://djangoapp.domain.com/.domain.com/admin 

我試圖理解爲什麼Django是試圖重定向的部分URL,而不是使用相對URL?

我已經嘗試禁用django中的常見中間件,它會停止奇怪的重定向,但是通過禁用此功能,django管理員不再自動進行身份驗證。

回答

0

這是一個familiar問題引起的URL重寫,在您的設置文件中設置爲FORCE_SCRIPT_NAME = ''

+0

感謝您的快速響應。要跟進,請刪除設置爲複合APPEND_SLASH = False以再次使用默認值True。並添加此設置已解決問題 – Greg

+0

進一步測試表明,這並沒有很好地解決了這個問題。當使用管理員操作時,使用add將域重新放回。例如。 https://djangoapp.domain.com/admin/appname/add/.domain.com/admin/appname/modelname/ – Greg