我已经挣扎了无数个小时以上的问题,并没有找到解释的行为,无论是在这个网站或任何其他网站上的事情。可能是我使用了错误的查询。这是我关于堆栈溢出的第一个问题,所以请轻点;)
我的路由器后面有一个服务器(它有内部IP 192.168.2.254),并使用端口转发将公共端口80和443转发到我的(ubuntu)服务器。我可以通过输入该服务器的公共IP (例如80.81.82.83)或进入A记录包含相同公共IP的域(例如example.org),或者在同一网络上键入它的内部IP (例如192.168.2.1)来访问该服务器。我使用该服务器上的NGINX作为反向代理,将请求委托给同一服务器上的适当(web)应用程序。路由器是我从互联网提供商那里得到的标准路由器。
我有两个客户端连接到该服务器,客户机A与服务器位于同一网络(例如192.168.2.2),而客户机B不在同一网络上,而是在世界其他地方(例如90.91.92.93)。
当我与客户机B(即不在同一网络上)连接到我的服务器(使用公共IP或域名)并检查客户端IP (即$remote_addr)的NGINX访问日志时,正确/预期的IP地址显示为: 90.91.92.93。
当我使用服务器的内部IP (192.168.2.1)与客户机A(与服务器相同的网络)连接到服务器时,访问日志显示来自客户机的正确/预期IP地址: 192.168.2.2。但是,当我使用公共IP地址或域名从同一个客户端连接到服务器时,NGINX访问日志显示来自路由器的IP地址: 192.168.2.254。
这一切为什么要发生?这样,我就不能记录(并操作)内部客户端连接到服务器的内容。
发布于 2021-05-03 21:34:16
但是,当我使用公共IP地址或域名从同一个客户端连接到服务器时,NGINX访问日志显示来自路由器的IP地址: 192.168.2.254。这一切为什么要发生?这样,我就不能记录(并操作)内部客户端连接到服务器的内容。
这是因为当您连接到公共IP地址(或使用公共IP地址的公共域名)时,连接从客户端(192.168.2.2)到路由器(192.168.2.254),然后路由器NAT连接到它自己的接口的源地址,即最接近目的地的接口的IP地址。
https://serverfault.com/questions/1062453
复制相似问题