我使用 nginx 来提供我的SPA前端和我的 django 后端(REST api)。
我的django后端在http://127.0.0.1:8000
与gunicorn一起奔跑。
我的服务器的IP是http://X.X.X.X/
我想从http://X.X.X.X/
和http://X.X.X.X/api/
的后端投放我的前端。
到目前为止,我的前端的nginx配置文件看起来像这样。
server {
listen 80;
server_name 0.0.0.0;
client_max_body_size 4G;
access_log /var/log/nginx/frontend/access.log;
error_log /var/log/nginx/frontend/error.log;
location /api/ {
proxy_pass http://goa:8000/api/;
proxy_redirect http://goa:8000/api/ http://$host/api/;
proxy_set_header SCRIPT_NAME /api;
}
location / {
alias /var/www/html/goa/;
try_files $uri $uri/ /index.html;
proxy_redirect off;
}
}
我试图遵循这个post。
现在的问题是django路由总是路由到/api/
,但我的路由不知道这个前缀。因此,如果我转到/api/admin/
,django会处理该请求但却找不到/api/admin/
,因为它只知道/admin/
。
我知道我可以在Django本身重写我的路由,但是我想在nginx配置中保留与路由重定向相关的所有内容。