我使用 vps、ubuntu 20、nginx、gunicorn 来运行 django 项目。
我想运行
sudo nano /etc/nginx/sites-available/default/:
root /home/ubuntu/client/build;
server {
listen 80;
server_name <my_ip>;
access_log /var/log/nginx/example.log;
location /media/ {
root /home/ubuntu/api;
expires 30d;
}
location /static/ {
root /home/ubuntu/api;
expires 30d;
}
location /api/ {
rewrite /api/(.*) /$1 break;
proxy_pass http://<my_api>:8000;
proxy_set_header Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location / {
try files $uri $uri /index.html
}
}
前端、后端工作正常,静态和媒体工作正常。
但是当我进入 api/admin 页面时,我所有的 href 仍然指向根目录。
例如,当我按“orders”href时,我得到了< a href="/admin/orders/" >Orders的链接,我想获得“/api/admin/orders/”
我考虑过 /admin/ 重定向,但这是正确的决定吗?
我在gunicorn日志中看到很多未找到错误,因为链接不正确。
我可以用 nginx 修复它吗?或者在 django 设置中?
您可以尝试在 nginx 配置中分离管理位置
location /admin/ {
proxy_pass http://<my_api>:8000;
proxy_set_header Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}