$realip_remote_port

变量 $realip_remote_port 保存发起请求的客户端的端口号,该端口号是 NGINX 从上游服务器接收到的。 — NGINX Core (HTTP)

$realip_remote_port NGINX Core (HTTP)

说明

$realip_remote_port 变量用于反向代理场景,表示客户端连接到服务器时使用的原始端口号。当 NGINX 位于负载均衡器或代理之后,并且需要实际的客户端连接详情用于日志或其他处理时,该变量尤其有用。当使用 real_ip 模块时,此变量会变得可用,real_ip 模块允许 NGINX 在请求由其他服务器(例如 Web 应用防火墙或负载均衡器)转发时正确识别客户端的 IP 和端口。 此变量通常包含表示端口号的数字值,例如 443(HTTPS)或 80(HTTP),具体取决于客户端最初如何连接。如果在 NGINX 配置中正确设置了 `real_ip_header` 指令以捕获传入请求的头(如 X-Forwarded-For),并且配置正确且这些头存在,则 $realip_remote_port 变量将准确反映客户端使用的端口。未正确设置可能导致日志记录不正确和客户端连接识别错误。 总之,$realip_remote_port 变量通过确保应用在经由各种中间服务器处理时仍能引用客户端的实际连接详情,从而增强了安全性和监控能力。

配置示例

http {
    set_real_ip_from 192.168.1.1;  # Example trusted proxy
    real_ip_header X-Forwarded-For;
}

server {
    location / {
        access_log /var/log/nginx/access.log combined;
    }
}

# In the combined log format, you can include the realip remote port
log_format combined '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $realip_remote_port';

子系统

http

可缓存

上下文

http, server, location, if

确保在对 NGINX 进行编译时包含 real_ip 模块。否则,该变量将不可用。

正确配置受信任的代理设置;否则,该变量可能返回不正确或默认值。

确保用于设置 real_ip 的头部被上游代理正确转发。配置错误的代理可能会修改这些头部或不设置它们。