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-gunicorn-nginx:502 网关错误
为本地开发设置 django 和 dj-database-url
Django 会话导致 Angular 出现 JWT“令牌丢失或不正确”错误