You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置NGINX获取已认证用户的remote_user变量

解决NGINX获取IIS已认证Windows用户名的问题

首先得明确:你的NGINX实例本身并没有处理用户认证,所以$remote_user变量自然是空的——这个变量只有当NGINX自身完成了身份验证(比如basic auth、LDAP auth)时才会被填充。而你的认证是在前端IIS企业门户完成的,所以核心思路是让IIS把已认证的用户名传递给NGINX,再由NGINX转发给后端Flask应用。

以下是具体的配置步骤:

1. 配置IIS传递Windows用户名到NGINX

因为IIS是前端反向代理,它需要将认证后的用户信息注入到请求头中发送给NGINX:

  • 打开IIS管理器,找到你的企业门户站点,进入URL重写模块
  • 创建或编辑现有的反向代理规则,切换到服务器变量选项卡
  • 添加一个新的服务器变量,名称设为HTTP_X_REMOTE_USER,值设置为{REMOTE_USER}(这个IIS变量存储了已认证的Windows用户名)
  • 确保该变量被允许在请求中传递(点击"允许"按钮添加到允许列表)

这样IIS会在转发请求到NGINX时,带上X-Remote-User请求头,值就是用户的Windows账户名。

2. 修改NGINX配置接收并转发用户名

更新你的NGINX站点配置,从IIS传递的请求头中提取用户名,然后转发给后端Flask:

server {
    # Docker DNS resolver 127.0.0.11;
    location / {
        # 从IIS发送的X-Remote-User头中获取用户名,赋值给$remote_user变量
        set $remote_user $http_x_remote_user;

        # Prevent resolution on start
        set $docker_host "app";
        proxy_pass http://$docker_host:8999;
        proxy_pass_request_headers on;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        # 将用户名转发给后端Flask,可以用Remote-User或自定义头
        proxy_set_header Remote-User $remote_user;
        proxy_set_header X-Remote-User $remote_user;
    }
    listen 80;
    server_name app.companyDomain.net;
}

关键说明:

  • 如果IIS传递的是Remote-User而不是X-Remote-User,就把$http_x_remote_user改成$http_remote_user
  • 添加proxy_set_header是为了让后端Flask能直接通过请求头拿到用户名

3. 在Flask应用中获取用户名

在你的Flask代码中,通过请求头即可获取用户名:

from flask import Flask, request

app = Flask(__name__)

@app.route('/index', methods=['POST'])
def index():
    # 从请求头获取用户名,根据你NGINX设置的头名称选择
    username = request.headers.get('Remote-User') or request.headers.get('X-Remote-User')
    # 接下来用这个用户名做数据库查询即可
    return f"Authenticated user: {username}"

额外注意事项

  • 为了安全,建议在IIS和NGINX之间使用HTTPS通信,避免请求头被篡改
  • 确保IIS的Windows身份认证已经正确启用,并且企业门户的访问必须经过认证(禁用匿名访问)

内容的提问来源于stack exchange,提问作者jugo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:32:47