- 新增 AGENTS.md 仓库说明与 excelize 依赖 - 新增正则表达式、go操作excel、Nginx常见错误、Golang底层架构笔记 - 布尔变量命名迁移至资源/编程/规范,删除随手记旧笔记
46 lines
947 B
Markdown
46 lines
947 B
Markdown
## Nginx 反代未透传客户端 IP 导致服务端日志全量变为 127.0.0.1
|
|
|
|
### 现象
|
|
|
|
后端解析IP后全量变成 `127.0.0.1`。
|
|
|
|
### 原因
|
|
|
|
后端解析IP的顺序是
|
|
```
|
|
X-Forwarded-For → X-Real-IP → RemoteAddr
|
|
```
|
|
|
|
**Nginx**转发至后端服务的 location 块缺少`proxy_set_header`指令:
|
|
|
|
```nginx
|
|
location /olive3 {
|
|
|
|
proxy_pass http://127.0.0.1:55430;
|
|
|
|
proxy_connect_timeout 300s;
|
|
|
|
proxy_send_timeout 300s;
|
|
|
|
proxy_read_timeout 300s;
|
|
|
|
}
|
|
```
|
|
|
|
### 修复
|
|
|
|
在缺失的 location 块中补充 header 透传:
|
|
|
|
```nginx
|
|
location /api {
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_pass http://127.0.0.1:55430;
|
|
# ... 其他配置不变
|
|
}
|
|
```
|
|
|
|
- `$proxy_add_x_forwarded_for`:将客户端真实 IP 追加到已有 `X-Forwarded-For` 尾部,而非覆盖
|
|
- `$remote_addr`:Nginx 直接看到的对端地址,作为 `X-Real-IP` 传递
|
|
|