【问题标题】:Configuring Nginx and Gunicorn for DRF, Django and React Frontend为 DRF、Django 和 React 前端配置 Nginx 和 Gunicorn
【发布时间】:2019-07-25 14:37:22
【问题描述】:

我有一个应用程序,它的前端在 React 中,后端在 Django 中,前端使用 DRF 开发的 API。现在我将 Nginx 与 Gunicorn 一起用作 Web 服务器。以下是我在 sites-available 中的 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的路径,如果是什么是格式吗?

【问题讨论】:

  • API 请求会发生什么?对于这些请求,浏览器的网络选项卡在开发者工具中显示什么?
  • 显示方法不允许错误
  • 您的 API 请求是否使用路径 /nokia-sdn/api/v1/

标签: django nginx django-rest-framework gunicorn


【解决方案1】:

我怀疑问题是由于 Host 标头不匹配,Django 拒绝了带有 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/;
}

【讨论】:

    猜你喜欢
    • 2019-01-08
    • 1970-01-01
    • 2019-04-30
    • 2017-02-23
    • 2012-11-11
    • 2012-06-24
    • 2019-01-18
    • 2020-04-08
    • 2016-04-20
    相关资源
    最近更新 更多