使用Nginx鉴权

  • 挂载
    将docker容器中的Nginx的配置文件挂载出来
#复制 Nginx/etc/nginx/conf.d/default.conf文件  。 使内外文件同步
container cp Nginx:/etc/nginx/conf.d/default.conf
#nginx的目录挂载出来,然后进行修改
/etc/nginx/conf.d
  • 修改default文件的内容
server {
	#server_name:需要修改成自己的本机ipv4
    listen       80;
    server_name  192.168.1.101;

    # 首页,即直接访问Nginx时的地址
    index index.html;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
	#在auth_request添加/auth验证,这个是对应下面的代码的
	## 鉴权通过后的处理方式是什么
    location /api/ {
        auth_request /auth;
        # 鉴权通过后的处理方式
        proxy_pass http://192.168.1.101:8080/success;
    }

    location = /auth {
        # 发送子请求到HTTP服务,验证客户端的凭据,返回响应码
        internal;
        # 设置参数
        # 就是将localhost:8080/api/.....很多信息后缀的信息塞到query中
        set $query '';
        if ($request_uri ~* "[^\?]+\?(.*)$") {
            set $query $1;
        }
        # 验证成功,返回200 OK
        proxy_pass http://192.168.1.101:8080/verify?$query;
        # 发送原始请求
        proxy_pass_request_body off;
        # 清空 Content-Type
        proxy_set_header Content-Type "";
     }

    error_page 404 /404.html;
        location = /40x.html {

        }

    error_page   500 502 503 504  /50x.html;
     location = /50x.html {
     }

}
  • 总结
    将Nginx转发时进行判断,从而实现鉴权
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx 可以通过配置模块来代理 WebSocket 连接,并且可以在代理的过程中进行鉴权,以确保只有经过授权的用户可以建立 WebSocket 连接。这通常可以通过修改 Nginx 的配置文件来实现。下面是一个基本的配置示例,用于说明如何使用 Nginx 的 `location` 块和 `proxy_pass` 指令来代理 WebSocket 请求,并通过 `proxy_set_header` 指令转发用户认证信息。 ```nginx http { server { listen 80; server_name example.com; location /websocket { proxy_pass http://backend_websocket_server; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; # 这里可以添加鉴权的配置,比如: # proxy_set_header Authorization "Bearer $token"; # 如果使用了基于Token的鉴权 # 如果需要在Nginx中处理鉴权,可以使用auth_basic和auth_basic_user_file指令 # auth_basic "Restricted Area"; # auth_basic_user_file /path/to/.htpasswd; # 其他自定义的鉴权配置,如使用 Lua 模块进行复杂的鉴权逻辑 } # 其他配置... } } ``` 在这个配置中,`proxy_pass` 指令用于指定后端的 WebSocket 服务器地址。`proxy_set_header` 指令用于将重要的请求头信息转发给后端服务器。如果需要鉴权,可以根据你的鉴权方式来添加额外的配置。例如,如果你使用基于 HTTP 基本鉴权(Basic Auth),可以使用 `auth_basic` 和 `auth_basic_user_file` 指令。如果是基于 Token 的鉴权,则可以在 `proxy_set_header` 中添加 `Authorization` 头部。 此外,Nginx 还支持使用外部模块,如 `ngx_http_lua_module`,来进行更复杂的鉴权逻辑。如果使用 Lua 模块,需要在 Nginx 中加载 Lua 脚本,并在脚本中编写鉴权逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值