Php 获取托管在虚拟机中的用户IP地址网站
我使用Ubuntu和VirutalBox将我的网站托管在自己的服务器上。我需要根据IP地址获取用户位置。我知道我可以使用JS在客户端获取用户IP地址。我尝试使用PHP在服务器中获取用户地址,但我总是获得相同的IP地址。如何配置VirtualBox以在服务器端获取用户IP?在虚拟机上:Php 获取托管在虚拟机中的用户IP地址网站,php,ip-address,virtualbox,Php,Ip Address,Virtualbox,我使用Ubuntu和VirutalBox将我的网站托管在自己的服务器上。我需要根据IP地址获取用户位置。我知道我可以使用JS在客户端获取用户IP地址。我尝试使用PHP在服务器中获取用户地址,但我总是获得相同的IP地址。如何配置VirtualBox以在服务器端获取用户IP?在虚拟机上: $\u服务器['REMOTE\u ADDR']只要虚拟机与具有internet连接的主机位于同一子网中(即:在Virtualbox上,这称为“桥接”),就可以工作 如果您有一个从虚拟机到internet的“Nat”
$\u服务器['REMOTE\u ADDR']
只要虚拟机与具有internet连接的主机位于同一子网中(即:在Virtualbox上,这称为“桥接”),就可以工作
如果您有一个从虚拟机到internet的“Nat”ed(或类似)连接,那么所有传入的HTTP请求都将来自主机的IP
在本地子网上:
如果您的最终用户无法直接访问“主机”计算机,并且您已将端口“转发”到内部“主机”计算机,那么您只需删除一个级别的NAT(如上所述),剩下另一个级别的NAT(您的路由器)。在虚拟机上:
$\u服务器['REMOTE\u ADDR']
只要虚拟机与具有internet连接的主机位于同一子网中(即:在Virtualbox上,这称为“桥接”),就可以工作
如果您有一个从虚拟机到internet的“Nat”ed(或类似)连接,那么所有传入的HTTP请求都将来自主机的IP
在本地子网上:
如果您的最终用户无法直接访问“主机”计算机,并且您已将端口“转发”到内部“主机”计算机,那么您只需删除一个级别的NAT(如上所述),剩下另一个级别的NAT(您的路由器)。我的虚拟机在Ubuntu中,我的主机在Windows中,我映射了apche、ssh和mysql端口。在这种情况下,它是桥接的吗?与端口的“映射”无关,也与主机上的Windows无关。Virtualbox虚拟机配置的以太网设备必须是“桥接的”(而不是“Nat”——我认为这是默认设置)!如果您说您也在路由器上执行NAT以将apache/ssh/mysql端口转发到Windows主机,那么这也会导致您丢失远程地址(您将获得路由器的IP地址)。是的,我正在获得路由器IP地址,有没有办法获取IP地址?或者我应该在客户端获取IP地址?如果你的路由器执行简单的DNAT,你就无法获取IP地址。您可能需要在路由器上配置DMZ,并在“主机”计算机上运行反向代理。我的虚拟机在Ubuntu中,主机在Windows中,我映射了apche、ssh和mysql端口。在这种情况下,它是桥接的吗?与端口的“映射”无关,也与主机上的Windows无关。Virtualbox虚拟机配置的以太网设备必须是“桥接的”(而不是“Nat”——我认为这是默认设置)!如果您说您也在路由器上执行NAT以将apache/ssh/mysql端口转发到Windows主机,那么这也会导致您丢失远程地址(您将获得路由器的IP地址)。是的,我正在获得路由器IP地址,有没有办法获取IP地址?或者我应该在客户端获取IP地址?如果你的路由器执行简单的DNAT,你就无法获取IP地址。您可能需要在路由器上配置DMZ,并在“主机”计算机上运行反向代理。从命令行(非管理)(VM-必须关闭):
VBoxManage.exe modifyvm“name_machine”--nataliasmode1 proxyonly
从命令行(非管理)(VM-必须关闭):VBoxManage.exe modifyvm“name_machine”--nataliasmode1 proxyonly