当前位置: 首页 > ops >正文

nginx-realip问题解决方案

nginx-realip问题解决方案

  • 一、配置真实ip解析
  • 二、日志中记录真实 IP
  • 三、在日志中验证


一、配置真实ip解析

让backend server知道前端是谁来访问的,知道他们的ip地址

LB在转发数据包的时候,在http请求报文里增加一个字段,携带user的ip地址,这样backend server就知道user的ip地址了

在负载均衡器上修改http请求报文头部字段,添加一个X-Real-IP字段
配置在监听80端口的server 虚拟主机上,到时访问的时候使用http协议访问

[root@LB conf]# vim nginx.confserver {listen       80;location / {# 转发给负载均衡器proxy_pass  http://myweb1;proxy_set_header  X-Real-IP  $remote_addr;}[root@LB conf]# nginx  -t
nginx: the configuration file /usr/local/nginx1/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx1/conf/nginx.conf test is successful
[root@LB conf]# nginx  -s reload

将nginx内部的remote_addr这个变量的值,赋值给X-Real-IP这个变量,X-Real-IP这个变量会在http协议的请求报文里添加一个X-Real-IP的字段,后端的real server 服务器上的nginx就可以读取这个字段的值 X-Real-IP
这个变量名可以自己定义,随便取名,后面引用的时候,不区分大小写


二、日志中记录真实 IP

在后端real server上使用这个x_real_ip这个字段
web1和web2服务器上都要进行修改

[root@web-1 conf]# vim nginx.conf
http {include       mime.types;include       /usr/local/nginx1/conf/conf.d/*.conf;server_tokens off;#在日志文件的格式里,增加变量$http_x_real_ip  表示我们引用这个变量的值写到日志文件里log_format  main  '$http_x_real_ip  - $remote_addr -  $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';#启用下main格式的访问日志access_log  logs/access.log  main;server {listen 80;server_name www.huang.com;access_log  logs/huang.com.access.log  main;
.......省略[root@web-1 conf]# nginx  -t
nginx: the configuration file /usr/local/nginx1/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx1/conf/nginx.conf test is successful
[root@web-1 conf]# nginx  -s reload

三、在日志中验证

测试 -> 访问LB

效果就是在日志文件里能看到前端用户的ip地址,具体看哪个日志文件,需要在web服务器上确认访问的是哪个虚拟主机,然后确认是哪个access.log文件,就能看到real ip的地址

[root@web2 logs]# tail -f huang.com.access.log
在这里插入图片描述

配置在监听443端口的server 虚拟主机里,访问的时候使用https协议

http://www.xdnf.cn/news/19364.html

相关文章:

  • 算法面试题(上)
  • 前阿里专家揭秘:你对中国十大GEO专家的认知,99%都是错的
  • 吴恩达机器学习作业十二:协同过滤(电影推荐系统)
  • 使用 BayesFlow 通过神经网络简化贝叶斯推断(一)
  • 中医文化学习软件,传承国粹精华
  • 动态滑动窗口还搞不清?一文搞定动态滑动窗口 | 基础算法
  • Windows系统安装Git详细教程
  • 【Java后端】Spring Boot 全局域名替换
  • TCP实现线程池竞争任务
  • FPGA|Quartus II 中使用TCL文件进行引脚一键分配
  • 深入理解零拷贝:本地IO与网络IO的性能优化利器
  • Docker基本介绍
  • MySQL 慢查询 debug:索引没生效的三重陷阱
  • 深度学习框架与工具使用心得:从入门到实战优化
  • 动作指令活体检测通过动态交互验证真实活人,保障安全
  • 数字后端tap cell:新老工艺tap cell区别
  • 软考中级数据库系统工程师学习专篇(67、数据库恢复)
  • Linux网络socket套接字(中)
  • AI人工智能大模型应用如何落地
  • DriveDreamer-2
  • C++ 模板全览:从“非特化”到“全特化 / 偏特化”的完整原理与区别
  • CUDA与图形API的深度互操作:解锁GPU硬件接口的真正潜力
  • Linux 系统都有哪些
  • Playwright Python 教程:实战篇
  • docker中的命令(四)
  • Coze源码分析-工作空间-项目开发-前端源码
  • 如何重置SVN被保存的用户名和密码
  • 【pve】
  • 轻量化注意力+脉冲机制,Transformer在低功耗AI中再度进化
  • 吴恩达机器学习作业十 PCA主成分分析