Php 使用外部URL时访问内部URL
我正在开发一个界面,以显示哪些VNC web站点处于活动状态,并提供指向该web界面的链接 示例:站1位于端口5800上 如果我在我的本地网络上运行它,它工作得很好,因为所有的计算机都在本地网络上,我需要的是一种从外部IP进行工作的方法 是否仍然可以将会话重定向到一个框架或使其保持本地的东西 下面是我做的一个测试,它在本地网络上运行良好,远程测试只能起到一半的作用:Php 使用外部URL时访问内部URL,php,vnc-server,Php,Vnc Server,我正在开发一个界面,以显示哪些VNC web站点处于活动状态,并提供指向该web界面的链接 示例:站1位于端口5800上 如果我在我的本地网络上运行它,它工作得很好,因为所有的计算机都在本地网络上,我需要的是一种从外部IP进行工作的方法 是否仍然可以将会话重定向到一个框架或使其保持本地的东西 下面是我做的一个测试,它在本地网络上运行良好,远程测试只能起到一半的作用: $station1=@fsockopen(“192.168.1.1”,5800) if($station1){ 回声“; 回声“
$station1=@fsockopen(“192.168.1.1”,5800)
if($station1){
回声“;
回声“
”;
fclose(车站1);
}否则{
echo“站1处于非活动状态。”;
回声“
”;
}
“fsockopen”在“服务器端”执行后返回TRUE,但在“客户端”(如浏览器)执行后,单击结果链接失败
有办法解决这个问题吗?有什么想法吗?尝试使用此代码进行测试,(您会收到一个错误,告诉您出了什么问题):
此外,使用WAN ip连接到internet的网络内部访问您的WAN ip也不能通过普通路由器完成。您必须确定其本地网络或WAN网络,然后相应地更改ip(加上将所有WAN流量路由到服务器)
您或许可以通过web调用并获取外部IP地址,然后使用该地址。。。但是,只有当您查询的是Web服务器时,这才有效。如果不是的话,它会变得棘手。。。根据路线的不同,它可能会变得非常棘手。。。因此,如果每个内部IP都有一个不同的外部IP,那么它可以正常工作,但如果没有,那么您必须控制请求的路由方式 所以说你有 192.168.1.1 192.168.1.2 192.168.1.3 它们连接到您的家庭无线路由器,该路由器连接到互联网。。。。如果说你的有线调制解调器,那么所有3个都将有相同的IP到你网络之外的人,事实上,你的路由器很可能不允许人们回拨到你的网络。您必须将路由器配置为将请求转发到各个端口,以转到特定的内部IP地址 因此,在不知道路由是如何设置的情况下,回答这个问题是非常困难的您必须在路由器中进行设置,并让VNC在每台机器的不同端口上运行。最好将端口号映射到内部IP,例如:
Port 5801 -> 192.168.1.1
Port 5802 -> 192.168.1.2
Port 5803 -> 192.168.1.3
etc.
如果您随后从外部调用该页面(例如使用动态IP),则必须从PHP中找到您的动态IP(例如,请参阅如何做到这一点),然后链接到每个端口
<a href="123.123.123.123:5801">Station 1 active.</a>
<a href="123.123.123.123:5802">Station 2 active.</a>
<a href="123.123.123.123:5803">Station 3 active.</a>
如果不将VNC映射到不同的端口,就无法做到这一点。对于外部IP,只存在一个IP地址。LAN的内部IP毫无意义,外部呼叫方无法访问。您使用的是什么web服务器?如果是apache,您是否启用了mod_代理?您不能使用具有公共IP的本地站点作为应用程序的“服务器”吗?$station1将始终返回true,如果您抑制错误@mway-感谢您在正确方向上的提示,我将查看我的apache服务器的mod_代理。非常感谢Pekka,这是解决这个问题的方法。
Port 5801 -> 192.168.1.1
Port 5802 -> 192.168.1.2
Port 5803 -> 192.168.1.3
etc.
<a href="123.123.123.123:5801">Station 1 active.</a>
<a href="123.123.123.123:5802">Station 2 active.</a>
<a href="123.123.123.123:5803">Station 3 active.</a>