nginx获取用户真实ip

732 查看

配置

location /tech/ { 
     proxy_pass http://blog_servers/tech/ ;
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header Host $host; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_pass_request_headers on; 
}

内置变量

这里,$http_host 和 $remote_addr 都是 nginx 的导出变量,可以在配置文件中直接使用。

如果 Host 没有出现在 HTTP header 中,则 $http_host 的值为空,而 $host 和 $http_host 同样表示请求头中的 Host 字段,但若 Host 字段不存在,则以实际处理的虚拟主机 server 的 server_name 替代。

因此一般而言,会用 $host 代替 $http_host 变量,从而避免 http 请求中丢失 Host 头部的情况下 Host 不被重写的失误。 

docs