我有一个 nginx 实例作为 TCP 反向代理运行。
我有两个 nginx 后端服务器。
如果源 IP 来自特定子网 (192.168.139.0/24),我将代理设置为将流量转发到服务器 A,如果源 IP 来自不同的子网,则转发到服务器 B。
配置工作正常,但我唯一的问题是在后端服务器上我无法在访问日志中获取真实 IP,而是得到 (127.0.0.1)。
我尝试在我的 nginx 代理上使用 proxy_set_header,但我收到错误,即不应在此位置定义指令。
这是我的代理配置:
worker_processes 1;
daemon off;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
stream {
upstream benign{
server 127.0.0.1:8080;
}
upstream suspicious{
server 127.0.0.1:9090;
}
geo $backend_svr {
192.168.139.0/24 benign;
default suspicious;
}
#log_format basic '$proxy_protocol_addr - $remote_user [$time_local] '
# '$protocol $status $bytes_sent $bytes_received '
# '$session_time';
server {
listen 443;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass $backend_svr;
#proxy_protocol on;
#set_real_ip_from $proxy_protocol_addr;
}
}
如何配置代理以便能够在后端服务器日志中检索真实客户端 IP?如何配置我的后端服务器以能够接收从代理发送的真实 IP?