gpt4 book ai didi

java - 获取上游客户端的真实ip

转载 作者:行者123 更新时间:2023-12-01 12:59:42 26 4
gpt4 key购买 nike

如何在nginx中获取上游后面的客户端IP?

现在我使用下一个配置:

# 上游监听器

upstream ts {
server localhost:841 weight=10 max_fails=3 fail_timeout=10s;
server 10.1.3.209:8080 backup;
}

# 服务器监听器

server {
listen 80;
server_name 10.9.24.45;

location / {
proxy_pass http://ts;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

# 应用监听器

server {
listen 841;
server_name localhost;

charset utf-8;

access_log /var/log/nginx/access_ts.log;
error_log /var/log/nginx/error_ts.log;

client_max_body_size 16M;

set $www /www;
set $root $www/apps/ts/ROOT;

include /etc/nginx/sites-available/locations;

location / {
proxy_pass http://localhost:840;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
include /etc/nginx/sites-available/location-config;
}
}

在我的java应用程序中,我使用X-Real_IP header 来获取客户端的IP,一切都很好,但是当我开始使用上游的另一个配置后,我只看到127.0.0.0。认为这是正确的,但我需要为我的应用程序获取真实的 IP。

如何获得 nginx 上游的真实 IP?

我看到一些答案,例如 proxy_set_header realip $remote_addr,但是如果不更改 java 应用程序我能做什么。

最佳答案

我遇到了同样的问题,问题是您转发的 header 发生了变化

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-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;

关于java - 获取上游客户端的真实ip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23602151/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com