论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
备份容灾
›
备份
›
使用Nginx搭建旁路服务器获取客户端真实IP ...
使用Nginx搭建旁路服务器获取客户端真实IP
天空闲话
金牌会员
|
2024-6-10 20:02:04
|
显示全部楼层
|
阅读模式
楼主
主题
805
|
帖子
805
|
积分
2415
一、前言
在实际业务开发过程中,很多时间有记录客户端真实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证书
下载openssl: openSSL下载地点
安装openssl, 按照提示【下一步】就行
创建私钥,进入到安装目录的bin目录下,在此目录下打开CMD下令窗口,然后执行:
openssl genrsa -des3 -out nginx-https.key 1024
复制代码
执行过程中必要设置暗码,任意设置一个就行:
执行完成以后,会生成私钥文件:
为了后续启动nginx不输入暗码,可以多做一步删除暗码的操作,在CMD窗口执行:
openssl rsa -in nginx-https.key -out nginx-https.key.unsecure
复制代码
创建 csr 证书
同样在openssl安装bin目录下,在CMD窗口执行:
openssl req -new -key nginx-https.key.unsecure -out nginx-https.csr
复制代码
执行过程中必要输入一些信息,任意输入就行,最后会生成一个csr文件。
生成crt证书:
openssl x509 -req -days 365 -in nginx-https.csr -signkey nginx-https.key.unsecure -out nginx-https.crt
复制代码
最终生成文件:
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,这个必要特殊留意。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
天空闲话
金牌会员
这个人很懒什么都没写!
楼主热帖
css过渡样式
Mysql终端Terminal操作
C语言执行过程
编程能力提升系列:1. 二维矩阵的最大 ...
quarkus数据库篇之三:单应用同时操作 ...
云娜:从计算、存储角度,谈网易数据治 ...
MySQL数据库设计概念(多表查询&事务操 ...
Cesium 案例(一) Z-Indexing Geometr ...
【数据库】数据库课程设计一一疫苗接种 ...
如何精简 Prometheus 的指标和存储占用 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表