首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在同一台服务器上配置Nginx与Vue.js,Django Rest Framework作为后端和/api/?

在同一台服务器上配置Nginx与Vue.js,Django Rest Framework作为后端和/api/?
EN

Stack Overflow用户
提问于 2021-09-23 18:03:55
回答 1查看 245关注 0票数 1

我正在将我新开发的电子商务部署到我拥有的Ubuntu服务器上。我已经为前端和后端设置了Nginx。整个应用程序运行良好。唯一的问题是DRF API没有从后端获得任何东西(它不发送电子邮件,用户不能注册)。所有这些都会得到错误500。在我看来,我仍然需要将/api/添加到我的Nginx配置中,但当我这样做时,整个应用程序都会宕机。有人能解释一下在"sites-available“中设置这个的最好方法吗?谢谢!

这是我的网站-可用于后端:

代码语言:javascript
复制
upstream perulab_app_server {
    server unix:/webapps/perulab/venv/run/gunicorn.sock fail_timeout=0;
}

server {
    listen 8000;
    server_name 172.16.7.52;

    client_max_body_size 4G;

    location /static/ {
        root /webapps/perulab/web-backend;
    }

    location /media/ {
        root /webapps/perulab/web-backend;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        if (!-f $request_filename) {
            proxy_pass http://perulab_app_server;
        }
    }
}

这是我的网站-可用于后端:

代码语言:javascript
复制
server {
    listen 8010;
    listen [::]:8010;
    server_name _;
    charset utf-8;
    root /webapps/perulab/web-frontend/dist;
    index index.html index.htm;

    location / {
        try_files $uri /index.html;
    }
}

当我以现在的方式使用它时,console会打印以下错误:

代码语言:javascript
复制
GET http://172.16.7.52:8000/api/v1/get-user-details/ 500 (Internal Server Error)

NameError at /api/v1/get-user-details/

name 'token' is not defined

在这里,例如,在登录时,当本地机器上一切正常时,没有定义令牌。此外,Token与发送用户详细信息无关,它甚至在模型中都没有任何与之相关的内容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-23 19:32:10

我找到了解决方案。基本上,我必须将位置配置添加到后端的"Sites-Available“文件中:

代码语言:javascript
复制
upstream perulab_app_server {
    server unix:/webapps/perulab/venv/run/gunicorn.sock fail_timeout=0;
}

server {
    listen 8000;
    server_name 172.16.7.52;

    client_max_body_size 4G;

    location /static/ {
        root /webapps/perulab/web-backend;
    }

    location /media/ {
        root /webapps/perulab/web-backend;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        if (!-f $request_filename) {
            proxy_pass http://perulab_app_server;
        }
    }

/ THIS IS THE SOLUTION:
    location /api/ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://perulab_app_server/api/;
        proxy_ssl_session_reuse off;
        proxy_set_header Host $http_host;
        proxy_redirect off;
    }

    
    
}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69304930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档