Redian新闻
>
Nginx的配置文件如何设置头信息保留真实IP不丢失

Nginx的配置文件如何设置头信息保留真实IP不丢失

公众号新闻



    在 Nginx 配置中设置头信息以保留客户端的真实 IP 地址通常是在使用反向代理的场景中需要的。当 Nginx 作为反向代理时,客户端的真实 IP 地址可能会在转发请求时丢失,因为到达应用服务器的请求看起来是从 Nginx 代理服务器发出的。为了解决这个问题,你可以使用 X-Real-IP 或 X-Forwarded-For 头信息来转发真实的客户端 IP。

这里是一个基本的配置示例:

server {    listen 80
location / { 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_pass http://backend_server }}

  1. proxy_set_header Host $host; 将请求的 Host 头设置为原始请求的 Host 头。

  2. proxy_set_header X-Real-IP $remote_addr; 将真实的客户端 IP 地址添加到请求头中。这里的 $remote_addr 是 Nginx 变量,代表客户端的 IP 地址。

  3. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 添加一个 X-Forwarded-For 头,其中包含原始客户端的 IP 地址。$proxy_add_x_forwarded_for 会追加客户端的 IP 地址到已有的 X-Forwarded-For 头信息中,如果存在的话。

请确保将 http://backend_server 替换为你的后端服务器的实际地址。

    此外,确保你的应用服务器或框架已配置为从这些头信息中读取真实的客户端 IP 地址。不同的应用和框架可能有不同的配置方法来支持这一点。

在java代码里怎么获取真是的客户端ip

    在 Java 应用中获取真实的客户端 IP 地址通常涉及到解析 HTTP 请求的头信息。当你的应用部署在一个反向代理(如 Nginx)后面时,代理通常会在每个请求中添加特定的头信息(例如 X-Real-IP 或 X-Forwarded-For),以传递原始客户端的 IP 地址。

以下是一个基本的 Java 代码示例,展示了如何在一个基于 Servlet 的应用中获取这些头信息:

javaCopy codeimport javax.servlet.http.HttpServletRequest;
public class NetworkUtils {
public static String getClientIp(HttpServletRequest request) { String xForwardedForHeader = request.getHeader("X-Forwarded-For"); if (xForwardedForHeader == null) { return request.getRemoteAddr(); } else { return xForwardedForHeader.split(",")[0].trim(); } }}

在这个例子中,getClientIp 方法首先检查 X-Forwarded-For 头信息。如果这个头信息存在,方法会解析它并返回列表中的第一个 IP 地址,因为 X-Forwarded-For 可能包含由多个代理添加的多个 IP 地址,其中第一个通常是原始客户端的 IP 地址。如果 X-Forwarded-For 头信息不存在,方法会回退到使用 HttpServletRequest 的 getRemoteAddr() 方法,这通常返回直接建立连接的客户端(在这种情况下是代理服务器)的 IP 地址。

请注意,当处理来自不受信任源的 X-Forwarded-For 头信息时,需要谨慎,因为它可能被恶意客户端伪造。确保你的应用只在可信任的代理后面运行,并且考虑验证头信息中的 IP 地址。

链接:https://juejin.cn/post/7306520112877682688

(版权归原作者所有,侵删)


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
收藏版 | 北京互联网法院发布个人信息保护典型案例"关闭TikTok Shop不是拯救本地中小企业,而是拯救其他电商平台"如何设计一颗宇航级RISC-V芯片?kafka 消息“ 零丢失 ”的配方Feign 如何设置超时时间,不同情况下还真不一样有Tomcat,为什么还要Nginx?Kubernetes 中 Nginx 配置热加载恭喜!客人绿卡过期两年+,又在境外逾期,保留身份成功入境美国!绿卡境外过期、丢失、逾期,美之信旅游助您保留身份成功入境美国!红色日记 胜利闭幕 10.13-15观点 | 杨东:大模型时代更需加强企业用户信息保护上海发布控烟标识系统和设置规范,进一步规范设置禁烟标识、室外吸烟点标识及引导标识FastDFS+Nginx本地搭建文件服务器同时实现在外远程访问「端口映射」绿卡丢失/离境超过3年,还能保留身份返回美国吗?可以!邻家王姐为我偷书 (二)荷兰政府部分撤销了此前颁发的NXT:2050i和NXT:2100i两个型号光刻机的出口许可证哥大读书就住这里!在Morningside Park和Central Park的美景中醒来,任何设施都没有短板!丢不丢人?昨天,华女带手拉车到华人超市小偷小摸“囤货”过年!被曝光了…童年追忆 (四)为何中国实际生活水平,与GDP不符?NGINX 模块现在可以用 Rust 编写了聊聊曼哈顿我喜欢的中餐馆是性格决定婚姻质量?-我妈三姐妹婚姻的启示全文 | 上海市汽车销售行业个人信息保护合规指引【美食】法国每年进口3000吨青蛙腿!这一口打耳光也不丢重磅!国家安全部突然发声,点出金融"四大空者"!全球最重要多头信号显现,A股反弹能否持续?戴个口罩不丢人个人信息保护认证,这5家企业获首批证书!全文 |《网络安全标准实践指南—粤港澳大湾区跨境个人信息保护要求》公开征求意见洛县轿车STOP不停车 被巴士拦腰撞飞14伤如何设置双显示器有 Tomcat,为什么还要 Nginx ?前后端都用得上的 Nginx 日常使用经验FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」在美国报完税之后的税务文件该保留多久?绿卡境外过期、丢失、逾期,美之信旅游助您保留身份成功入境美国!
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。