nginx代理本地ip转发
时间: 2023-12-01 22:40:34 浏览: 129
当服务部署在服务器上时,一般都是通过nginx做代理转发。但是在common中的aop日志打印时,ip获取到的就变成本地的了。为了解决这个问题,可以通过修改nginx的代理配置,以及后端的工具类解析,打印真实ip。具体步骤如下:
1. 在nginx的配置文件中添加以下配置:
```
server {
listen 8000;
server_name localhost;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
location /api {
proxy_pass http://localhost:8008/api;
}
}
```
其中,`X-Real-IP`和`REMOTE-HOST`是自定义的header,用于传递真实的客户端IP地址。
2. 在后端的工具类中解析header中的IP地址,获取真实的客户端IP地址。例如,在Java中可以使用以下代码获取真实IP地址:
```java
public static String getRealIp(HttpServletRequest request) {
String ip = request.getHeader("X-Real-IP");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("REMOTE-HOST");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
```
3. 在aop日志打印中使用获取到的真实IP地址。
阅读全文