Nginx 反向代理配置

upstream up_dir
{
    server unix:/dev/shm/test.sock.0 max_fails=1 fail_timeout=60s;
    server unix:/dev/shm/test.sock.1 max_fails=1 fail_timeout=60s;
    server unix:/dev/shm/test.sock.2 max_fails=1 fail_timeout=60s;
}

server {
        
    location / {
        root /export/servers/aaa/;  # 设置根目录
        proxy_pass http://up_dir;   # 设置upstream,实现负载均衡
		
        # 转发请求中的Host头部,如果客户端请求头中没有携带这个头部,那么传递到后端服务器的请求也不含这个头部。
        # 更好的方式是使用$host变量,请求未携带Host时为虚拟主机的主域名。
        proxy_set_header Host $http_host;
		
        # $remote_addr变量的值是客户端的IP,将中间代理的ip都删掉  
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

X-Forwarded-For是一个HTTP扩展头部,格式定义为X-Forwarded-For:client, proxy1, proxy2
XFF的内容由[英文逗号+空格]隔开的多个ip组成,最开始的是离服务端最远的设备ip,然后是每一级代理设备的ip。
例如:一个HTTP请求到达服务器之前,经过了三个代理proxy1、proxy2、proxy3,ip分别为ip1、ip2、ip3,用户的真实ip为ip0。服务端最终收到的信息为 X-Forwarded-For:ip0, ip1, ip2

proxy3直连服务器,它会给XFF追加iP2,表示它是在帮proxy2转发请求。列表中没有ip3,ip3可以在服务端通过Remote Address字段获得。HTTP连接基于TCP连接,Remote Address来自TCP连接,表示与服务器建立TCP连接的设备ip,在这个例子中就是ip3。

讲解HTTP中X-Forwarded-For
https://imququ.com/post/x-forwarded-for-header-in-http.html

你可能感兴趣的:(Nginx,Nginx)