$remote_user

在 HTTP 基本认证期间,$remote_user 变量包含客户端提供的用户名。 — NGINX Core (HTTP)

$remote_user NGINX Core (HTTP)

说明

在 NGINX 中,当服务器配置为使用 HTTP 基本认证时,$remote_user 变量会被设置。这会在配置块中使用 `auth_basic` 指令时发生,提示客户端输入用户名和密码。客户端输入的用户名随后可供服务器使用,并可通过 $remote_user 变量访问。如果客户端未能成功认证,或请求不需要认证,则 $remote_user 将为空。 通常,$remote_user 变量用于日志记录或服务器配置中的授权目的。它可以包含在自定义日志格式中,使管理员能够追踪谁在访问某些资源。此外,该变量可以与条件性配置指令结合,影响访问控制决策,基于已认证用户的身份允许或拒绝访问。 该变量在安全至关重要的场景中最为有用,例如在公开需要用户识别以进行访问控制的敏感数据或服务时。然而,应注意这些信息可能具有敏感性,在日志中使用时应考虑隐私和安全实践,确保访问日志不会暴露可识别个人身份的信息。

配置示例

http {
    server {
        listen 80;
        server_name example.com;

        location / {
            auth_basic "Restricted Area";
            auth_basic_user_file /etc/nginx/.htpasswd;
            access_log /var/log/nginx/access.log combined;
            
            # Include the remote_user in the log
            log_format combined '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
        }
    }
}

子系统

http

可缓存

上下文

http, server, location, if

确保在相关的上下文或 location 块中设置了 `auth_basic` 指令,否则 $remote_user 将始终为空。

注意记录敏感信息(例如用户名)时的安全影响。记录 $remote_user 时始终考虑隐私指南。

检查 `auth_basic_user_file` 中设置的路径,以防止对认证文件的未经授权访问。