我有一個名爲myapp
一個Django的管理應用程序,我希望部署在不同物理設備,每個客戶一個多個實例。但是,我希望他們都可以從類似的域名mydomain.com/customer1/myapp
訪問。多個Django應用程序和重寫
我撥弄着特定的代理設置,並試圖對SO建議多件事情,但沒有相當適合我的使用情況......因爲我還不是很瞭解兩者nginx
和django
我很茫然!
我現在nginx.conf是:
server {
listen 80;
server_name myserver.com
location ^~ /static {
alias /path/to/static/files/;
}
# location/{
# proxy_pass http://127.0.0.1:8001;
# }
location ^~ /customer1/myapp/static {
alias /path/to/static/files/;
}
location /customer1/myapp {
rewrite ^/customer1/myapp/(/?)(.*) /$2 break;
proxy_pass http://127.0.0.1:8001;
}
}
我可以登錄屏幕通過myserver.com/customer1/myapp/admin
預期。但是,當我嘗試登錄時,nginx會將我的網址重寫爲myserver.com/admin
,這不是有效的網址。如何讓nginx避免實際重寫url並只更改傳遞給127.0.0.1:8001
的url?
FWIW,我使用gunicorn服務與gunicorn -b 127.0.0.1:8001 -n myapp
。如果我取消/
位置的註釋並刪除最後兩個位置塊,該應用程序效果很好。
我遠非一套這種方法,如果有替代品。目標是避免修改每個部署的django代碼,而只需在nginx.conf中爲新部署添加最少的代碼。
有關部署的問題可能更適合serverfault.com –
我不明白,你只是想讓django url反向生成/ customerX/myapp/admin /而不是/ admin /? – jpic
@jpic不,我想django只能看到根網頁。例如'127.0.0.1:8001/admin'。我假設我可以用nginx做到這一點,但我不知道如何。並指出關於'serverfault.com',我會在那裏發帖,如果我沒有在這裏算出任何東西,謝謝。 – Justin