服务器使用nginx反向代理后,后端服务器获取访客的真实ip的配置方法

本文介绍如何通过配置前端和后端的Nginx服务器,确保后端服务器能记录访问者的实际IP地址,而非反向代理服务器的IP。具体步骤包括在前端反向代理服务器上设置三个参数以传递客户端真实IP,并在后端服务器上配置日志格式以便正确记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公司目前使用的业务是前端使用nginx做为反向代理,后端使用nginx作为web服务器,由于前期没有配置,导致后端服务器记录的访问日志的ip全部是来着前端反向代理服务器的。
如果需要后端服务器记录访客真是ip。需要进行如下配置:

一、配置反向代理端的nginx服务器

在server后面增加如下这三个参数用于记录IP:

  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

这里写图片描述

二、在后端服务器配置如下

在后端服务器的nginx_http处配置如下:
配置log_format信息, 后续的日志后面也需要加上main这个参数

log_format  main '$remote_addr $remote_user [$time_local] "$request" '                                                                                                                                                           
                  '$status $body_bytes_sent "$http_referer" '                                                                                                                                                                               
                  '$http_user_agent $http_x_forwarded_for $request_time $upstream_response_time $upstream_addr $upstream_status'; 

这里写图片描述

以上即可记录访客的真实ip地址

这里写图片描述

参考文档:

https://www.cnblogs.com/kevingrace/p/5893499.html

### 配置 Nginx 作为 JSP 单体项目的反向代理 为了使 Nginx 成功充当 JSP 单体应用的反向代理,需调整 `nginx.conf` 或者特定站点配置文件内的设置。具体来说,在 `server` 块内定义监听端口、域名以及最重要的 `location` 路径映射至目标 Java Web 应用程序地址。 对于一个典型的部署场景: ```nginx server { listen 80; server_name example.com; location / { proxy_pass http://localhost:8080/; 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_set_header X-Forwarded-Proto $scheme; # 处理静态资源请求 try_files $uri @jspapp; } location @jspapp { proxy_pass http://localhost:8080; } } ``` 上述配置中,当接收到针对 `/` 的 HTTP 请求时,Nginx 将其转发给运行于本地 8080 端口上的 Tomcat 实例或其他 Servlet 容器[^1]。同时设置了若干头部字段用于传递原始客户端信息以便后端应用程序能够获取真实访客详情。 另外值得注意的是处理静态资源的方式——通过尝试先查找物理存在的文件(`try_files`);只有在找不到对应静态文件的情况下才会触发名为 `@jspapp` 的内部重定向规则去调用实际的应用逻辑[^4]。 #### 关键点解析 - **listen**: 设置外部可访问的服务端口号。 - **server_name**: 指定该虚拟主机响应哪些域名下的请求。 - **location /**: 对根路径及其子路径的所有请求都适用此规则。 - **proxy_pass**: 明确指出被代理的真实服务器位置。 - **header 参数设定**: 确保下游服务能正确识别并利用这些附加的信息来构建安全可靠的会话管理机制。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值