我有一个应用程序,其前端在React中,后端在Django中,并且使用DRF作为前端开发的API。现在,我将Nginx与Gunicorn一起用作Web服务器。以下是我在站点中可用的Nginx conf文件:
server {
listen 8000;
server_name localhost;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/nokia-ui/build/;
}
location /nokia-sdn/api/v1/ {
proxy_pass http://127.0.0.1:8000/nokia-sdn/api/v1/;
}
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://unix:/home/nokia-sdn/nokia.sock;
}
}
现在,当我访问http://localhost:8000/时,我获得了登录页面,但是我无法向后端发出任何api请求。是否需要在nginx文件中定义API的路径,如果那是什么格式?
答案 0 :(得分:1)
我怀疑问题是Django由于Host
标头不匹配而拒绝了400请求的API请求。这些ajax请求的127.0.0.1
标头可能使用Host
,而您使用localhost
来启动主页。
您应该告诉Nginx在/nokia-sdn/api/v1/
的位置配置中设置标头-例如:
location /nokia-sdn/api/v1/ {
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8000/nokia-sdn/api/v1/;
}