“Nginx配置字符串密钥认证方法详解” “Nginx字符串密钥验证设置指南” “基于Nginx的字符串密钥认证实战教程” “Nginx实现API密钥验证完整教程” “Nginx字符串密钥安全认证配置技巧”

有时候,我们的业务要求我们直接要用nginx实现字符串密钥认证,那么我写了个nginx实现字符串密钥认证教程这个教程教大家直接几个代码来实现认证,需要的来看看吧。

1.打开nginx配置文件,一般是nginx.conf,如果是宝塔面板直接在宝塔软件里面打开nginx然后进入配置文件行了,更方便一点,然后把这个代码加到配置文件里面行了,非常ok。

代码如下:

server {
    listen       9999;
    server_name  localhost;

    # 密钥定义
    set $key "123456";
    set $iskey false;

    location /docs {
        proxy_pass http://127.0.0.1:8999/docs;
    }

    location /openapi.json {
        proxy_pass http://127.0.0.1:8999/openapi.json;
    }

    location / {
        # 检查查询字符串参数或HTTP头部中的密钥是否正确
        if ($arg_key = $key) {
            set $iskey true;
        } else if ($http_key = $key) {
            set $iskey true;
        }

        # 如果没有有效的密钥,则重定向到/error403
        if ($iskey = false) {
            rewrite ^ /error403 last;
        }

        proxy_pass http://127.0.0.1:8999;
    }

    location = /error403 {
        internal;
        add_header Content-Type 'application/json';
        return 200 '{"error": "密钥错误"}';
    }
}

那么代码是啥意思呢?接下来讲解一下,这样也便于大家理解

同时我这里推荐大家如果需要使用一些api接口可以去这里API市场 里面寻找自己需要的接口,然后进行应用

Nginx 配置文件解析

server 块

nginx

深色版本

1server {
2    listen       9999;
3    server_name  localhost;
  • listen: 指定服务器监听的端口。这里监听的是端口 9999
  • server_name: 指定这个虚拟主机服务的域名或IP地址。这里服务名为 localhost,意味着它会响应来自本地的请求。

location 块

每个 location 块定义了如何处理特定URL路径的请求。

/docs 路径

nginx

深色版本

1    location /docs {
2        proxy_pass http://127.0.0.1:8999/docs;
3    }
  • location /docs: 当请求的路径为 /docs 时,执行此块内的配置。
  • proxy_pass: 将请求代理到另一个后端服务(这里是 http://127.0.0.1:8999/docs)。
/openapi.json 路径

nginx

深色版本

1    location /openapi.json {
2        proxy_pass http://127.0.0.1:8999/openapi.json;
3    }
  • location /openapi.json: 当请求的路径为 /openapi.json 时,执行此块内的配置。
  • proxy_pass: 将请求代理到另一个后端服务(这里是 http://127.0.0.1:8999/openapi.json)。
根路径 /

nginx

深色版本

1    location / {
2        # 设置密钥
3        set $key "123456";
4        set $iskey false;
5
6        # 如果路由参数中的key等于密钥
7        if ($arg_key = $key) {
8            set $iskey true;
9        }
10
11        # 如果请求头参数中的key等于密钥
12        if ($http_key = $key) {
13            set $iskey true;
14        }
15
16        # 如果上方2个条件均未满足
17        if ($iskey = false) {
18            rewrite ^ /error403 last;
19        }
20
21        proxy_pass http://127.0.0.1:8999;
22    }
  • location /: 当请求的路径为根路径时,执行此块内的配置。
  • **set key”123456″;∗∗:定义一个变量‘key“123456”;:定义一个变量key` 用于存放密钥。
  • **set iskeyfalse;∗∗:初始化‘iskeyfalse;:初始化iskey变量为false`,表示尚未验证密钥。
  • if (argkey=argkey=key) 和 if (httpkey=httpkey=key): 检查查询字符串 ($arg_key) 或 HTTP 请求头 ($http_key) 中是否存在与 $key 相等的密钥。如果存在,则将 $iskey 设置为 true
  • **if (iskey=false)∗∗:如果‘iskey=false):如果iskey仍为false,则表示密钥验证失败,此时将请求重定向到 /error403`。
  • proxy_pass http://127.0.0.1:8999;: 如果密钥验证成功,则将请求代理到 http://127.0.0.1:8999
错误页面 /error403

nginx

深色版本

1    location = /error403 {
2        internal;
3        add_header Content-Type 'application/json';
4        return 200 '{"error": "密钥错误"}';
5    }
  • location = /error403: 当请求的路径精确匹配 /error403 时,执行此块内的配置。
  • internal: 标记该位置只能从内部重定向到达,不能直接通过外部请求访问。
  • add_header Content-Type ‘application/json’;: 添加 Content-Type 响应头,指定返回的数据格式为 JSON。
  • return 200 ‘{“error”: “密钥错误”}’;: 返回一个状态码为 200 的响应,并附带一个 JSON 字符串,内容为 "{"error": "密钥错误"}"

总结

这段配置主要实现了以下功能:

  1. 监听端口 9999 并响应 localhost 的请求。
  2. 对特定路径 /docs 和 /openapi.json 进行直接代理。
  3. 对根路径 / 的请求进行密钥验证,验证通过后进行代理,否则返回一个包含错误信息的 JSON 响应。

 

给TA打赏
共{{data.count}}人
人已打赏
未分类

KVM虚拟化技术企业级配置与入门指南

2025-5-15 17:06:31

未分类

Nginx配置字符串密钥验证方法指南

2025-5-15 17:06:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索