我让 Django 在 Nginx 后面运行fastcgi_pass
。我在子路径上运行 Django,例如/django/sample
.
location /django/sample {
include fastcgi_params;
fastcgi_pass 127.0.0.1:8025;
}
我FORCE_SCRIPT_NAME
在 Django 设置模块中使用,它似乎解决了我在子路径上运行时遇到的所有问题。
在 settings.py 中:
FORCE_SCRIPT_NAME = "/django/sample/"
我去这里以管理员身份登录(并正确获取管理员 UI):
http://server/django/sample/admin
但是当我提交时,它会重定向到:
http://server/django/sample/django/sample/admin
真正奇怪的是,如果我更改FORCE_SCRIPT_NAME=""
登录工作。
但是,那么管理页面中的所有链接都是/admin
,不是/django/sample/admin/
我到底错过了什么?设置FORCE_SCRIPT_NAME="/django/sample/"
似乎可以解决除管理员登录之外的所有问题。
有任何想法吗?
更新:
我也尝试过fastcgi_split_path_info
在 nginx conf 中使用(并在设置中取出FORCE_SCRIPT_NAME
)。同样,这解决了除了管理员登录重定向之外的所有路径问题。
像这样的conf:
location /django/sample {
fastcgi_split_path_info ^(/django/sample)(.*)$;
include fastcgi_params;
fastcgi_pass 127.0.0.1:8025;
}