Java: HttpServletRequest.getRemoteAddr()不显示与CURL或IFConfig相同的



我的QA服务器IFConfig显示以下IP:

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
inet 172.16.0.1  netmask 255.255.0.0  broadcast 0.0.0.0
ether 02:42:73:6e:ba:54  txqueuelen 0  (Ethernet)
RX packets 0  bytes 0 (0.0 B)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 0  bytes 0 (0.0 B)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eno16780032: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 146.213.179.50  netmask 255.255.255.210  broadcast 146.213.179.119
inet6 fc80::250:56ff:fea0:6dc9  prefixlen 64  scopeid 0x20<link>
ether 00:50:56:a0:6d:b9  txqueuelen 1000  (Ethernet)
RX packets 529734790  bytes 285217050121 (265.6 GiB)
RX errors 0  dropped 19  overruns 0  frame 0
TX packets 502519153  bytes 423616456297 (394.5 GiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eno33559296: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 10.0.1.2  netmask 255.255.255.240  broadcast 10.0.1.14
inet6 fc80::250:56ff:fea0:498c  prefixlen 64  scopeid 0x20<link>
ether 00:50:56:a0:49:8b  txqueuelen 1000  (Ethernet)
RX packets 176687369  bytes 54833457460 (51.0 GiB)
RX errors 0  dropped 14  overruns 0  frame 0
TX packets 180706064  bytes 34257419515 (31.9 GiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eno50338560: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 10.0.2.8  netmask 255.255.255.240  broadcast 10.0.2.10
inet6 fc80::250:56ff:fca0:67c7  prefixlen 64  scopeid 0x20<link>
ether 00:50:56:a0:67:a7  txqueuelen 1000  (Ethernet)
RX packets 3322039516  bytes 2382840054404 (2.1 TiB)
RX errors 0  dropped 20  overruns 0  frame 0
TX packets 2212620398  bytes 2317370292546 (2.1 TiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
inet 127.0.0.1  netmask 255.0.0.0
inet6 ::1  prefixlen 128  scopeid 0x10<host>
loop  txqueuelen 0  (Local Loopback)
RX packets 130568922  bytes 39557947765 (36.8 GiB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 130568922  bytes 39557947765 (36.8 GiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

当我在QA上使用curl命令;它显示如下:

curl bot.whatismyipaddress.com
153.110.231.215

但是当我在同一台机器(wildfly服务器)上编写以下java Rest API时并使用公共域名从同一机器(wildfly服务器)的另一个客户端调用该API。我得到以下IP:

146.192.61.46

代码:

@GetMapping("/customers/all")
public List<XxtoneCustomersV> getAllCustomers(HttpServletRequest request){
LOG.info("Remote Addr: " + request.getRemoteAddr());

当我从本地击中相同的rest api时,我得到了正确的IP地址。

为什么linux命令和java代码的IP有这样的差异?我使用正确的java方法吗?

也是一个我从Curl检索出现公共IP(如果ifconfig返回内部的),所以相同的不应该得到在remoteAddr?

这可能是因为QA机器中的第二个客户机通过本地接口而不是Internet路由请求。要克服这个问题,首先检查第二个客户端为公共域名解析了哪个IP。如果它解析一个内部IP,那么你可以将公共IP添加到主机文件中,以强制第二个客户端使用Internet路由。

相关内容

  • 没有找到相关文章

最新更新