[alibaba/nacos]nacos 2.2.0 版本,配置 nginx 反向代理时,无法通过 nginx 反向代理修改 nacos 密码

2023-12-18 967 views
4

Nginx 配置如下:

upstream nacos-server { server 172.31.1.186:8848 weight=1 max_fails=2 fail_timeout=30s; server 172.31.1.186:8850 weight=1 max_fails=2 fail_timeout=30s; server 172.31.1.186:8852 weight=1 max_fails=2 fail_timeout=30s; }

server { listen 8000; server_name localhost; charset utf-8; default_type text/html;

location ~ /nacos/* {
    proxy_pass http://nacos-server;
    client_body_buffer_size 10M;
    client_max_body_size 10G;
    proxy_buffers 1024 4k;
    proxy_read_timeout 300;
    proxy_next_upstream error timeout http_404;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Cookie $http_cookie;
    proxy_pass_header User-Agent;
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
}

}

回答

0

前端接收到的响应是什么呢?

7

1、 报 session expired! Snipaste_2023-01-09_18-07-02

2、请求接口会报 401. Snipaste_2023-01-09_18-06-17

0

看起来是个bug,目前修改密码时需要路由到同一个后端。

7

默认插件实现中,用户名相关信息是存储在session中的,nginx反向代理可能会导致多次请求处于不同的session中?

1

只有登陆接口会主动讲用户信息设置到session中,与此同时默认鉴权插件中基于spring-security实现的鉴权机制不起作用,导致其他服务端节点不存储session(只有接受了login请求的节点才存储session)

3

为 Nginx 反向代理配置会话保持(添加 nginx-sticky-module 模块)后,会存在一些偶发性修改成功的情况,并不能保证每一次都修改成功。(基本上全部失败的,貌似会话保持没有生效) upstream nacos-server { sticky; server 172.31.1.186:8848 weight=1 max_fails=2 fail_timeout=30s; server 172.31.1.186:8850 weight=1 max_fails=2 fail_timeout=30s; server 172.31.1.186:8852 weight=1 max_fails=2 fail_timeout=30s; }

1

如果用户登陆时请求发送到服务实例a,那么只有修改用户密码的请求被转发到实例a时才能成功。

如果急需修改用户密码,可以试下直接使用服务实例的地址访问控制台(而不是使用nginx的代理地址)

5

这样确实可以实现修改Nacos用户密码的目的。