0

我有一个 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?

4

0 回答 0