使用Nginx搭建旁路服务器获取客户端真实IP
创始人
2025-01-17 07:32:46
0

一、前言

在实际业务开发过程中,很多时候有记录客户端真实IP的需求,但是从客户端发送的请求往往会经过很多代理服务器,导致后端服务获取的IP为代理以后的IP,不具有业务含义。为了解决这个问题,可以搭建一个旁路服务器,前端在发起请求的时候需要先请求旁路服务器,获取该客户端的真实IP(可对该IP地址进行缓存,不必每次发送请求前都先请求旁路服务器),在真正向后端发送请求时,将获取的IP地址放入X-Forwarded-For请求头中,将真实的客户端IP地址进行传递。

二、解决方案

使用Nginx搭建旁路服务器,客户端向后端发送请求时,先请求一次Nginx服务器,返回真实的客户端IP(可将该IP进行缓存,减少旁路服务器请求),在真正向后端发送请求时,将获取的IP地址放入X-Forwarded-For请求头中,将真实的客户端IP地址进行传递。

1. 搭建http协议旁路服务器

1.1 修改Nginx的nginx.conf配置文件,添加返回IP地址的代码:
server {         listen       80;         server_name  localhost;          location / {             root   html;             index  index.html index.htm;         } 		 		# 添加返回文本格式的IP地址映射,返回请求方IP 		location /http_ip { 			default_type text/plain; 			return 200 $remote_addr; 		} 		# 添加返回json格式的IP地址映射,返回请求方IP 		location /http_json_ip { 			default_type application/json; 			return 200 "{\"ip\":\"$remote_addr\"}"; 		}          #error_page  404              /404.html;          # redirect server error pages to the static page /50x.html         #         error_page   500 502 503 504  /50x.html;         location = /50x.html {             root   html;         }     } 
2. 启动Nginx
3. 进行请求测试
  • 文本格式:

    在这里插入图片描述

  • JSON格式

    在这里插入图片描述

2. 搭建https协议旁路服务器

2.1 生成https证书
  1. 下载openssl: openSSL下载地址

    在这里插入图片描述

  2. 安装openssl, 按照提示【下一步】就行

  3. 创建私钥,进入到安装目录的bin目录下,在此目录下打开CMD命令窗口,然后执行:

    openssl genrsa -des3 -out nginx-https.key 1024  

    执行过程中需要设置密码,随便设置一个就行:

    在这里插入图片描述

    执行完成以后,会生成私钥文件:

    在这里插入图片描述

  4. 为了后续启动nginx不输入密码,可以多做一步删除密码的操作,在CMD窗口执行:

    openssl rsa -in nginx-https.key -out nginx-https.key.unsecure 
  5. 创建 csr 证书

    同样在openssl安装bin目录下,在CMD窗口执行:

    openssl req -new -key nginx-https.key.unsecure -out nginx-https.csr 

    执行过程中需要输入一些信息,随便输入就行,最后会生成一个csr文件。

  6. 生成crt证书:

    openssl x509 -req -days 365 -in nginx-https.csr -signkey nginx-https.key.unsecure -out nginx-https.crt 
  7. 最终生成文件:

    在这里插入图片描述

2.2 修改nginx启动配置
# HTTPS server          server {         listen       443 ssl;         server_name  localhost; 		 		# 这个是证书的crt文件所在目录         ssl_certificate      D:/devTools/openssl/service/bin/nginx-https.crt; 		# 这个是证书key文件所在目录         ssl_certificate_key  D:/devTools/openssl/service/bin/nginx-https.key.unsecure;          ssl_session_cache    shared:SSL:1m;         ssl_session_timeout  5m;          ssl_ciphers  HIGH:!aNULL:!MD5;         ssl_prefer_server_ciphers  on;          location / {             root   html;             index  index.html index.htm;         } 		 		# 添加返回文本格式的IP地址映射 		location /http_ip { 			default_type text/plain; 			return 200 $remote_addr; 		} 		# 添加返回json格式的IP地址映射 		location /http_json_ip { 			default_type application/json; 			return 200 "{\"ip\":\"$remote_addr\"}"; 		}     } 
2.3 启动Nginx
2.4 进行请求测试
  • 文本格式

    在这里插入图片描述

  • JSON格式

    在这里插入图片描述

到此使用Nginx搭建旁路服务器就完成了。

三、注意

使用Nginx搭建旁路服务器虽然可以获取到客户端真实的IP,但是有一个问题,通信过程中请求头可能被第三方篡改,导致获取IP也并非真实IP,这个需要特别留意。

相关内容

热门资讯

八分钟辅助挂!开心联盟牛牛外 ... 八分钟辅助挂!开心联盟牛牛外 挂多少钱,手机德州其实真的有挂,微扑克教程(有挂详情);该软件可以轻松...
三分钟攻略!白金岛放炮罚辅助器... 三分钟攻略!白金岛放炮罚辅助器,来玩app德州真是存在有挂,教你攻略(有挂软件)1、全新机制【白金岛...
8分钟攻略!哥哥跑得快有挂吗,... 8分钟攻略!哥哥跑得快有挂吗,咪咪扑克果然有挂,必赢方法(有挂教学)哥哥跑得快有挂吗辅助器中分为三种...
9分钟辅助挂!衡阳丫丫字牌有没... 9分钟辅助挂!衡阳丫丫字牌有没有外挂,wEPOKE真是是真的有挂,攻略教程(有挂解说)衡阳丫丫字牌有...
一分钟实锤!七彩全民雀神辅助,... 一分钟实锤!七彩全民雀神辅助,WepOke原来存在有挂,专业教程(有挂技巧);七彩全民雀神辅助辅助器...
7分钟普及!南通长牌辅助器,w... 7分钟普及!南通长牌辅助器,wEpOke竟然是有挂,2025新版教程(有挂细节)南通长牌辅助器辅助器...
7分钟辅助!吉祥棋牌填大坑科技... 7分钟辅助!吉祥棋牌填大坑科技有挂吗,WEPoke一直存在有挂,存在挂教程(有挂辅助挂)1、全新机制...
5分钟普及!财神13张牌的规律... 5分钟普及!财神13张牌的规律,WepokE原来是有挂,黑科技教程(有挂教学)1、打开软件启动之后找...
5分钟辅助挂!雀神微信小程序辅... 5分钟辅助挂!雀神微信小程序辅助是真的有吗,德扑竟然是有挂,安装教程(有挂脚本)暗藏猫腻,小编详细说...
6分钟了解!微信随意玩辅助器,... 6分钟了解!微信随意玩辅助器,pokernow德州确实是真的有挂,科技教程(有挂解密);1、许多玩家...