Nginx 和 Django - JWT 问题

Posted

技术标签:

【中文标题】Nginx 和 Django - JWT 问题【英文标题】:Nginx and Django - JWT problems 【发布时间】:2019-06-07 06:28:19 【问题描述】:

我正在使用 Django Rest Framework 来创建 API。当我在本地运行它时效果很好,但是当我将它部署到我的服务器时,我遇到了 JWT 的问题。当我尝试发布新数据时,我收到一条错误消息:

"detail": "未提供身份验证凭据。"

当然,我传递的是 Authorization 标头:

authorization: JWT eyJ0eXAiOiJK.....

在我的服务器上,我正在使用带有 gunicorn 的 nginx。这是我的 nginx 配置:

upstream api 
    server unix:/home/bartalamej/api.sock fail_timeout=0;


server 

    listen 80;
    root /var/www/html;
    index index.html index.html;

    server_name api.mysite.cz;

    location /v1 
        rewrite ^/v1/(.*)$ /$1 break;
        include proxy_params;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header REMOTE_USER $remote_user;
        proxy_set_header Authorization $http_authorization;
        proxy_set_header USE_X_FORWARDED_HOST True;
        proxy_pass http://api;
    

    location /media  
        alias /home/bartalamej/api/media;  
    

    location /static 
        alias /home/bartalamej/api/static;
    


任何帮助将不胜感激:)

【问题讨论】:

你知道令牌停在哪里吗?您是否在开发者工具中看到它是从浏览器发送的?你在它的日志中看到它被 nginx 接受了吗?你看到它在适当的中间件中被 Django 接受了吗?传递的值是否正确? 我在 nginx 日志中看不到任何内容。我不知道如何签入 django 接受我的令牌 【参考方案1】:

问题出在我的 Django 配置上。在我的生产设置中,缺少身份验证类

【讨论】:

以上是关于Nginx 和 Django - JWT 问题的主要内容,如果未能解决你的问题,请参考以下文章

django Nginx部署

django-gunicorn-nginx:502 网关错误

为本地开发设置 django 和 dj-database-url

Django 会话导致 Angular 出现 JWT“令牌丢失或不正确”错误

Heroku/Django:没有名为 dj_database_url 的模块

django前后端分离部署