nginx proxy X-Forwarded-For
2016-07-17 11:31
351 查看
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 在nginx配置中,严谨一点来说这配置使用在作为代理的nginx中。
通过名字就知道,X-Forwarded-For 是一个扩展头。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP,现在已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239 (Forwarded HTTP Extension)标准之中。
用途: 可以获取真实的代理路径经过的各个代理的IP,记录日志中。
最简单的一个模型
client ----- nginx proxy------ngxin server
在proxy代理中加入一下配置:
server {
listen 80;
server_name bbs.test.com;
location / {
proxy_pass http://192.168.100.10; #代理到nginx server
root html;
index index.html index.htm;
}
nginx proxy 和 nginx server的日志格式:
模拟实验讲述这个原理过程
clinet 192.168.100.20
nginx proxy 192.168.100.13
nginx server 192.168.100.10
client发起一个请求(hosts已经解析 192.168.100.20 bbs.test.com)
curl -I bbs.test.com
查看nginx proxy处的日志: http_x_forwarded_for 字段为: "-"
查看nginx server处的日志: http_x_forwarded_for 字段 为: "192.168.100.20"
client再发起一个请求:
查看nginx proxy处的日志: http_x_forwarded_for 字段为: "1.1.1.1"
查看nginx server处的日志: http_x_forwarded_for 字段 为: "1.1.1.1, 192.168.100.20"
其实这个过程就是
1 nginx proxy接收到了client的请求,发现里面请求里面的X-Forwarded-For字段为1.1.1.1 所以ngixn写入日志的 http_x_forwarded_for的字段值为1.1.1.1
2 由于作为了这个请求的代理,然后ngixn设置了代理
3 nginx server受到代理发过来的请求,自然记录nginx日志的时候读取X-Forwarded-For字段的值的时候,值为 "1.1.1.1, 192.168.100.20"
本文出自 “崔德华运维打工从业路” 博客,请务必保留此出处http://cuidehua.blog.51cto.com/5449828/1827125
通过名字就知道,X-Forwarded-For 是一个扩展头。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP,现在已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239 (Forwarded HTTP Extension)标准之中。
用途: 可以获取真实的代理路径经过的各个代理的IP,记录日志中。
最简单的一个模型
client ----- nginx proxy------ngxin server
在proxy代理中加入一下配置:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
server {
listen 80;
server_name bbs.test.com;
location / {
proxy_pass http://192.168.100.10; #代理到nginx server
root html;
index index.html index.htm;
}
nginx proxy 和 nginx server的日志格式:
log_format main '$remote_addr $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
模拟实验讲述这个原理过程
clinet 192.168.100.20
nginx proxy 192.168.100.13
nginx server 192.168.100.10
client发起一个请求(hosts已经解析 192.168.100.20 bbs.test.com)
curl -I bbs.test.com
查看nginx proxy处的日志: http_x_forwarded_for 字段为: "-"
查看nginx server处的日志: http_x_forwarded_for 字段 为: "192.168.100.20"
client再发起一个请求:
查看nginx proxy处的日志: http_x_forwarded_for 字段为: "1.1.1.1"
查看nginx server处的日志: http_x_forwarded_for 字段 为: "1.1.1.1, 192.168.100.20"
其实这个过程就是
1 nginx proxy接收到了client的请求,发现里面请求里面的X-Forwarded-For字段为1.1.1.1 所以ngixn写入日志的 http_x_forwarded_for的字段值为1.1.1.1
2 由于作为了这个请求的代理,然后ngixn设置了代理
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;的操作,将自己的X-Forwarder-For http头部字段进行了修改,等于$proxy_add_x_forwarded_for(原有 的加上自己的IP,IP以逗号隔开) 值就为"1.1.1.1, 192.168.100.20"
3 nginx server受到代理发过来的请求,自然记录nginx日志的时候读取X-Forwarded-For字段的值的时候,值为 "1.1.1.1, 192.168.100.20"
本文出自 “崔德华运维打工从业路” 博客,请务必保留此出处http://cuidehua.blog.51cto.com/5449828/1827125
相关文章推荐
- linux下的nginx中php文件出现缓存的问题
- 【Nginx重写】下支持ThinkPHP的Pathinfo和URl Rewrite模式
- Nginx修改端口号
- nginx 控制页面缓存
- nginx php问题集
- Linux Nginx
- Nginx 工作原理和优化、漏洞
- Nginx笔记
- Nginx源码剖析
- nginx日志切割脚本
- Centos 7 安装 Nginx+MySQL+PHP
- Centos 6.5 安装 Nginx+MySQL+PHP
- nginx编译安装
- linux上安装nginx
- nginx监听端口非80时的转发问题的配置文件
- 日积(Running)月累(ZSSURE):nginx配置、putty连接保持以及AngularJS作用域$scope
- nginx buffered to a temporary 解决
- nginx防盗链配置
- Nginx负载均衡示例
- Nginx配置示例和方法(虚拟主机)