nginx 代理模块
注意,当使用http proxy模块(甚至fastcgi),所有的连接请求在发送到后端服务器之前nginx将缓存它们,因此,在测量从后端传送的数据时,它的进度显示可能不正确。
实验拓扑:
7.配置http反向代理
指令说明:proxy_pass
语法:proxy_pass url
默认值:no
使用字段:location, location中的if字段
这个指令设置被代理服务器的地址和被映射的uri,地址可以使用主机名或ip加端口号的形式,例如:proxy_pass http://localhost:8000/uri/;
8.重新加载一下配置文件
9.测试一下
注,大家可以看到,当我们访问192.168.18.208时,被代理重新定向到web1上。
10.查看一下web服务器日志
注,大家可以看到我们这里的客户的ip全是,nginx代理服务器的ip,并不是真实客户端的ip。下面我们修改一下,让日志的ip显示真实的客户端的ip。
11.修改nginx配置文件
指令说明:proxy_set_header
语法:proxy_set_header header value
默认值: host and connection
使用字段:http, server, location
这个指令允许将发送到被代理服务器的请求头重新定义或者增加一些字段。这个值可以是一个文本,变量或者它们的组合。proxy_set_header在指定的字段中没有定义时会从它的上级字段继承。
12.重新加载一下配置文件
13.测试并查看日志
注,大家可以看到日志记录的还是代理的ip,没有显示真实客户端的ip,为什么呢?我们来看一下httpd的配置文件。
14.查看并修改httpd配置文件
注,大家可以这里记录日志的参数还是%h,下面我们修改一下参数。
注,这是修改后的参数,将h%修改为%{x-real-ip}i,好的下面我们再来测试一下。
15.重启并测试
注,大家可以看到现在的日志里记录的ip地址就是真实的客户端地址了。