Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取托管在虚拟机中的用户IP地址网站_Php_Ip Address_Virtualbox - Fatal编程技术网

Php 获取托管在虚拟机中的用户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”

我使用Ubuntu和VirutalBox将我的网站托管在自己的服务器上。我需要根据IP地址获取用户位置。我知道我可以使用JS在客户端获取用户IP地址。我尝试使用PHP在服务器中获取用户地址,但我总是获得相同的IP地址。如何配置VirtualBox以在服务器端获取用户IP?

在虚拟机上:

$\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