Nginx实战案例—获取真实的客户端
在此实验中server1作为nginx服务器;server2为server1的代理;server3为客户端
实验前提:因为nginx是模块化的,实验前必须编译好这个模块:
./configure --prefix=/usr/local/nginx --with-http_realip_module
step1 在server2中修改nginx配置文件配置反向代理:
(首先记得给server2装好nginx)
vim /usr/local/nginx/conf/nginx.conf
17 http {
18 include mime.types;
19 default_type application/octet-stream;
20 upstream westos {
21 server 172.25.254.1:80;
22 }
118 server { #记得把原来的server注释掉,在这里重新写一个server
119 listen 80;
120 server_name www.westos.org;
121 location / {
122 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
123 proxy_pass http://westos;
124 }
125 }
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #制作软链接
nginx -t #语法检测
nginx #启动nginx
nginx -s reload #在不暂停服务的情况下重新加载
step2 在server1中清空日志:
cd /usr/local/nginx/logs
>access.log #清空日志
step3 在server3中添加解析并测试:
vim /etc/hosts
172.25.1.2 server2 www.westos.org
step4 在server1中查看日志:
cd /usr/local/nginx/logs
cat access.log
step5 修改server1配置文件,获取真实客户端ip:
vim /usr/local/nginx/conf/nginx.conf
36 server {
37 listen 80;
38 server_name localhost;
39 set_real_ip_from 172.25.1.2; #从代理处获取真实ip
40 real_ip_header X-Forwarded-For; #从http请求头中拿到数据
41 real_ip_recursive on;
step6 修改server2配置文件,获取真实客户端ip:
vim /usr/local/nginx/conf/nginx.conf
118 server {
119 listen 80;
120 server_name www.westos.org;
121 location / {
122 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #从真实的请求头中拿到数据,真实后端才能保存下来
123 proxy_pass http://westos;
step7 重新加载server1和server2的nginx:
nginx -t #语法检测
nginx -s reload #在不暂停服务的情况下重新加载
step8 在客户端中访问server1:
step9 在server1的日志中查看客户端ip:
设置好配置文件后,就可以看到真实的客户端ip(server3的ip)了