网站首页 > 技术教程 正文
简介
在使用 nginx 做反向代理时,后端要获取到客户端 IP,需要在 nginx 上设置对应的配置。
设置转发请求头
设置 HTTP 请求头中的 X-Forwarded-For,X-Real-IP
...
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://127.0.0.1:8080;
}
...
X-Real-IP 如果有多层转发,只要在第一层设置就可以了,防止变量被覆盖。 X-Forwarded-For 由于取前一个的值,相当于经过 nginx 代理就会追加一个 IP,只要获取第一个就是真实的客户端 IP。
后端获取
- 先获取 X-Real-IP
- 如果获取不到 X-Real-IP,通过 X-Forwarded-For 取
- 如果再取不到,就直接取 remote_addr
nginx 配置 X-Forwarded-For 的风险
用户可以通过自己设置请求头来伪造 ip。
比如在发起 http 请求时设置请求头 x-forwarded-for:1.1.1.1。
那么服务器通过 x-forwarded-for 获取到的第一个 ip 就是用户伪造的 ip。
防止伪造方案
- 在只有 1 层 nginx 代理的情况下,设置 nginx 配置
proxy_set_header X-Forwarded-For $remote_addr;
此时$remote_addr 获取的是用户的真实 ip
- 在有多层反向代理的情况下设置 最外层 nginx 配置和情况 只有一层代理 一样proxy_set_header X-Forwarded-For $remote_addr; 除了最外层之外的 nginx 配置proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
这样就防止了用户通过伪造请求头来伪造真实 ip。
后台只需要从 x-forwarded-for 请求头中取出第一个 ip 就是用户的真实 ip。
后面如果有多个 ip,就是反向代理的 ip
X-Real-IP
只要 第一层 nginx 代理情况下只需配置即可:
proxy_set_header X-Real-IP $remote_addr;
当有多层反向代理时,只能在最外层代理设置
proxy_set_header X-Real-IP $remote_addr;
如果在非最外层设置,则获取到的是反向代理机器的 ip
猜你喜欢
- 2024-10-10 通过nginx日志分析IP UV和PV量(nginx日志访问量前十的ip)
- 2024-10-10 Nginx 之 realip模块 使用详解(nginx rewrite模块)
- 2024-10-10 nginx+lua站点防止ip刷新数据处理
- 2024-10-10 生产环境用shell进行nginx日志访问IP和URL统计
- 2024-10-10 https网站(nginx服务器)如何禁止“直接通过IP地址访问”
- 2024-10-10 Nginx通过ip进行限流,并增加白名单
- 2024-09-14 nginx允许IP访问不生效问题「原创」
- 2024-09-14 Linux 配置Nginx反向代理教程和说明
- 2024-09-14 EFK收集nginx日志并展示来源IP地图
- 2024-09-14 Nginx反向代理:通过外网访问内网数据库(mysql)
你 发表评论:
欢迎- 最近发表
-
- Linux新手必看:几种方法帮你查看CPU核心数量
- linux基础命令之lscpu命令(linux中ls命令的用法)
- Linux lscpu 命令使用详解(linux常用ls命令)
- 如何查询 Linux 中 CPU 的数量?这几个命令要知道!
- 在linux上怎么查看cpu信息(linux如何查看cpu信息)
- 查看 CPU 的命令和磁盘 IO 的命令
- 如何在CentOS7上改变网卡名(centos怎么改网卡名字)
- 网工必备Linux网络管理命令(网工必备linux网络管理命令是什么)
- Linux 网络命令知多少(linux 网络 命令)
- Linux通过命令行连接wifi的方式(linux命令行连接无线网)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)