架构

Nginx 4层代理获取客户端真实IP_客户端

4层代理配置

stream {
    upstream backend {
        server 10.4.7.30:80;
    }
 
    server {
        listen 80;
        proxy_pass backend;
        proxy_connect_timeout 1s;
        proxy_protocol on ;  # 主要是把这个参数开上
    }
}

后端nginx配置

注意这种方式客户端不能够直接访问后端服务器。

conf.d]# cat mywebsite.conf 
server {
  listen 81 proxy_protocol;
  root /www;

需要修改下日志格式。

http {
    log_format  main  '$proxy_protocol_addr  $remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_real_ip" "$http_x_forwarded_for"';
                   
$proxy_protocol_addr  # 这个变量获取到了客户端的真实IP地址。

客户端的真实IP地址。

Nginx 4层代理获取客户端真实IP_直接访问_02