nginx反向代理后实现nginx和apache两种web服务器能够记录客户端的真实IP地址

一.构建环境

二.配置反向代理

1.基于源码安装的nginx环境下修改nginx.conf(设备1)

[2.通过windows powershell进行修改hosts文件并测试](#2.通过windows powershell进行修改hosts文件并测试)

3.设备2和设备3上查看日志,可以看到访问来源都是代理服务器(2.190)而不是真实客户端地址

三.实现两台web服务器记录真实客户端IP地址

1.Nginx代理服务器配置(设备1)

2.Nginx类的web服务器(设备2)配置

(1)修改nginx.conf文件,在index下方继续添加以下内容

(2)浏览器访问后设备2查看日志

(3)设备3做域名映射后访问设备2查看日志以进一步确认

3.Apache类的web服务器(设备3)配置

(1)修改httpd.conf文件

(2)把原本这里的第一行LogFormat换成这个

(3)浏览器访问设备3进行测试


一.构建环境

三台设备,设备1(2.190)部署nginx环境,设备2(2.191)部署nginx,设备3(2.193)apache环境,保证都有区别的web页面内容

二.配置反向代理

1.基于源码安装的nginx环境下修改nginx.conf(设备1)

复制代码
[root@localhost conf]# pwd
/usr/local/src/nginx-1.22.0/conf
[root@localhost conf]# vim nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    error_log /usr/local/src/nginx-1.22.0/logs/error.log;
    access_log /usr/local/src/nginx-1.22.0/logs/access.log;
        server {
                listen 80;
                server_name www.aabb.com;
                location / {
                        proxy_pass http://192.168.2.191;
                }
        }               
        server {
                listen 80;
                server_name www.llss.com;
                location / {
                        proxy_pass http://192.168.2.193;
                }
        }
}

2.通过windows powershell进行修改hosts文件并测试

复制代码
PS C:\WINDOWS\system32> cd .\drivers\etc\

PS C:\WINDOWS\system32\drivers\etc> notepad .\hosts

PS C:\WINDOWS\system32\drivers\etc>

3.设备2和设备3上查看日志,可以看到访问来源都是代理服务器(2.190)而不是真实客户端地址

三.实现两台web服务器记录真实客户端IP地址

1.Nginx代理服务器配置(设备1)

在proxy_pass后继续添加以下内容

复制代码
server {
                listen 80;
                server_name www.aabb.com;
                location / {
                        proxy_pass http://192.168.2.191;
                        proxy_set_header Host $host;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_set_header X-Forwarded-Proto $scheme;
                }
        }
        server {
                listen 80;
                server_name www.llss.com;
                location / {
                        proxy_pass http://192.168.2.193;
                        proxy_set_header Host $host;
                        proxy_set_header X-Forwarded-For $http_x_forwarded_for;
                }
        }

2.Nginx类的web服务器(设备2)配置

(1)修改nginx.conf文件,在index下方继续添加以下内容

复制代码
server {
        listen       80;
        server_name  localhost;
        access_log   logs/access.log;
        location / {
            root   /usr/local/src/nginx-1.22.0/html;
            index  index.html index.htm;
            set_real_ip_from  192.168.2.190;  #此处填写你的nginx代理服务器的地址
            real_ip_header    X-Forwarded-For;
            real_ip_recursive on;
        }

(2)浏览器访问后设备2查看日志

通过浏览器访问传回虚拟机的这个访问地址是windows上的虚拟网卡VMnet8的地址

(3)设备3做域名映射后访问设备2查看日志以进一步确认

复制代码
#修改/etc/hosts文件后查看
[root@localhost ~]# tail -1 /etc/hosts
192.168.2.190 www.aabb.com
[root@localhost ~]# curl www.aabb.com
191

3.Apache类的web服务器(设备3)配置

(1)修改httpd.conf文件

复制代码
[root@localhost conf]# pwd
/etc/httpd/conf
[root@localhost conf]# vim httpd.conf

(2)把原本这里的第一行LogFormat换成这个

复制代码
LogFormat "%{X-FORWARDED-FOR}i %h %l %u %t %r %>s %b %{Referer}i %{User-Agent}i" combined
[root@localhost conf]# systemctl restart httpd.service

(3)浏览器访问设备3进行测试

返回了真实地址和nginx代理服务器的真实地址

相关推荐
##echo29 分钟前
嵌入式Linux裸机开发笔记9(IMX6ULL)GPIO 中断实验(1)
linux·c语言·笔记·单片机·嵌入式硬件
Reggie_L36 分钟前
RabbiteMQ安装-ubuntu
linux·ubuntu·ruby
AIGC_北苏1 小时前
让UV管理一切!!!
linux·人工智能·uv
YCY^v^3 小时前
centos 7 开启80,443端口,怎么弄?
linux·运维·centos
北南京海3 小时前
[Linux]进程地址空间
linux·运维·服务器
db_murphy5 小时前
Oracle数据块8KB、OS默认认块管理4KB,是否需调整大小为一致?
linux
mCell8 小时前
从删库到跑路?这50个Linux命令能保你职业生涯
linux·windows·macos
杰克逊的日记8 小时前
GPU运维常见问题处理
linux·运维·gpu
誰能久伴不乏9 小时前
Linux系统调用概述与实现:深入浅出的解析
linux·运维·服务器
程序员学习随笔10 小时前
Linux进程深度解析(2):fork/exec写时拷贝性能优化与exit资源回收机制(进程创建和销毁)
linux·运维·服务器