我有一个网站托管在我的局域网的本地服务器上。此服务器通过路由器的端口转发暴露在外部。我想知道客户端是从局域网外部还是局域网内部连接
对服务器的任何端口转发请求都显示为源自执行端口转发的设备的 IP 地址。
所以你只需要测试:
if ($_SERVER['REMOTE_ADDR'] == $the_ip_address_of_the_router_on_the_lan)
其中$the_ip_address_of_the_router_on_the_lan
是已知值,例如 192.168.0.1
。
LAN上的设备,假设它们直接访问您的服务器,将发出看似来自其自己的LAN IP地址的请求。
警告:如果使用主机名(如 foo.example.com
)访问服务器,并且您在 LAN 内部和外部使用相同的主机名,并且 LAN 内的 DNS 将该主机名指向路由器面向 Internet 的 IP 地址,则请求仍将由路由器端口转发。