怎么使用Nginx和Lua进行JWT校验
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章将为大家详细讲解有关怎么使用Nginx和Lua进行JWT校验,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Lua脚本这里的secret我遇到了很大的坑。一开
千家信息网最后更新 2026年11月04日怎么使用Nginx和Lua进行JWT校验
这篇文章将为大家详细讲解有关怎么使用Nginx和Lua进行JWT校验,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
Lua脚本
这里的secret我遇到了很大的坑。一开始直接从Java后端项目中复制了密钥出来,但是一直提示signature mismatch:,后来发现后端应用中使用base64decode相关方法,在Lua脚本中增加了ngx.decode_base64(secret)处理secret后解决问题。其实到这里还没有解决问题,在后端debug代码的时候,发现后端密钥被decode的结果是一串乱码,为了避免乱码的问题,通过https://www.base64encode.org/重新生成secret才最终解决了问题。
如果你的项目中也遇到了这个signature mismatch:错误,需要排查一下后端在生成token的时候,是否有对secret进行decode或者其它处理,在lua脚本中也要进行相应的处理。

nignx.conf配置
-- nginx-jwt.lualocal cjson = require "cjson"local jwt = require "resty.jwt"--your secretlocal secret = "yoursecrethere"--无需鉴权api清单local no_need_token_api_list = {'/api/register', '/api/login'}local function ignore_url (val) for index, value in ipairs(no_need_token_api_list) do if (value == val) then return true end end return falseendlocal M = {}function M.auth() if ignore_url(ngx.var.request_uri) then return else end -- require Authorization request header local auth_header = ngx.var.http_Authorization if auth_header == nil then ngx.log(ngx.WARN, "No Authorization header") ngx.exit(ngx.HTTP_UNAUTHORIZED) end -- require Bearer token local _, _, token = string.find(auth_header, "Bearer%s+(.+)") if token == nil then ngx.log(ngx.ERR, "Missing token") ngx.exit(ngx.HTTP_UNAUTHORIZED) end --decode_base64和后端保持一致 local jwt_obj = jwt:verify(ngx.decode_base64(secret), token) if jwt_obj.verified == false then ngx.log(ngx.ERR, "Invalid token: ".. jwt_obj.reason) ngx.status = ngx.HTTP_UNAUTHORIZED ngx.say(cjson.encode(jwt_obj)) ngx.header.content_type = "application/json; charset=utf-8" ngx.exit(ngx.HTTP_UNAUTHORIZED) endendreturn MDockerfile配置
worker_processes 1;events{ worker_connections 1024;}http{ lua_package_path "/opt/lua-resty-jwt/lib/?.lua;;"; upstream backend { server 192.168.1.1:8080; } access_log /logs/nginx_access.log; error_log /logs/nginx_error.log; server { listen 80; #后端api接口代理 location /api/ { access_by_lua_block { local obj = require('nginx-jwt') obj.auth() } proxy_pass http://backend; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }}关于"怎么使用Nginx和Lua进行JWT校验"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
问题
篇文章
脚本
处理
乱码
密钥
时候
更多
项目
生成
配置
不错
实用
很大
一致
代码
内容
接口
文章
方法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
手磨咖啡
喔噻互联网科技有限公司
中国互联网科技工作委员会毛军
北京互联网科技有限公司
奇酷互联网络科技
互联网科技论坛
互联网科技股午盘股票涨跌
互联网校园科技培训
崇明区互联网教育科技售后服务
新兴科技互联网创新大赛颁奖典礼
互联网科技和信息
中国互联网公司排名锤子科技
工业互联网展湾科技股份有限公司
新氧科技和美国互联网有关系吗
盐城市攀科互联网科技有限公司
互联网对科技影响
长沙易易互联网科技有限公司
互联网科技大佬云集
承德科技产业互联网平台
如何强化互联网金融科技
互联网科技排名
世界互联网领先科技成果
互联网科技网站
华脉科技工业互联网产品
互联网科技实习生岗位职责
和信科技工业互联网
国大互联网教育科技有限公司工作
爱医互联网络科技
启辰互联网科技
从那以后互联网科技有限公司