nginx 未知指令“auth_jwt”

Mil*_*ety 1 nginx jwt

我想在我的 nginx 上设置 jwt auth 但出现此错误:

nginx: [emerg] unknown directive "auth_jwt" in /usr/local/etc/nginx/nginx.conf
Run Code Online (Sandbox Code Playgroud)

我的 nginx 版本:nginx/1.15.8 操作系统:macOs Mojave v10.14.2

我在谷歌或其他网站上找不到答案。

/nginx.cofnig:

location / { 
        auth_jwt "closed site" token=$cookie_token;
        auth_jwt_key_file conf/api_secret.jwk;
        try_files $uri /index.html =404;
    }
Run Code Online (Sandbox Code Playgroud)

And*_*eev 5

最初的 JWT 模块是 Nginx Plus 的一部分,但是有许多开源免费模块可以做类似的事情:

  • https://github.com/tizpuppi/ngx_http_auth_jwt_module - 应该是 Nginx Plus 中 ngx_http_auth_jwt_module 的直接替代品(但目前有点过时,缺乏商业模块所具有的一些功能),支持 HS256、HS384、HS512、 RS256、RS384、RS512、ES256、ES384 和 ES512,可以从Authorization标头或 Nginx 变量获取令牌,WWW-Authenticate如果 JWT 验证失败,将响应标头,取决于 Jansson 和 libjwt
  • https://github.com/TeslaGov/ngx-http-auth-jwt-module - 支持 HS256 和 RS256,可以从Authorization标头或具有可配置名称的 cookie 获取令牌,可以配置为执行 302 重定向到登录页面(如果) JWT 验证失败,分别在和headers 中公开subemailAddress声明,轻松构建 Docker 镜像(基于 centos 7),依赖于 Jansson & libjwtX-UserIdX-Email
  • https://github.com/max-lt/nginx-jwt-module - 基于 nginx-alpine 的小型 Docker 镜像(~16Mb),支持 HS256、HS384、HS512、RS256、RS384、RS512、ES256、ES384 和 ES512,可以从Authorization标头或 Nginx 变量获取令牌,取决于 Jansson 和 libjwt
  • https://github.com/ch1bo/nginx-jwt - 支持HS256、HS384、HS512、RS256、RS384、RS512、ES256、ES384和ES512,不仅可以验证签名还可以颁发签名的JWT令牌,可以从以下位置获取令牌Authorization带有相同名称的 cookie 的后备标头(cookie 的名称不可配置),取决于 Jansson 和 libjwt,没有文档
  • https://github.com/maxam18/nginx-ejwt-moduleAuthorization - 支持 HS256 和 RS256,可以从标头或 Nginx 变量获取令牌,可以提取有效负载值并将其与预定义值进行比较,WWW-Authenticate如果 JWT 验证失败,将使用标头进行响应,没有外部依赖
  • https://github.com/andrei-markeev/ngx_http_jwted_module - 支持现代 Ed25519,可以从Authorization标头或 Nginx 变量获取令牌,在 $jwt_claims 变量中公开 JWT 声明 json,无外部依赖项

尽管开源模块种类繁多,但 Nginx Plus 的商业模块比这些模块中的任何一个都具有更多的功能,并且很可能经过了更好的考验并且维护得很好。

免责声明:我是此列表中最后一个模块的作者。