2

我正在运行一个配置了 2 个网络接口的 ubuntu jaunty 服务器:一个公共 IP,一个私有 IP。当我请求服务器 IP 时,我得到公共 IP。如果我有多个接口,是否有确保获得公共接口的最佳实践(这是我想要的)?

<?php
echo " <table>";
echo "<tr><td>" .$_SERVER['SERVER_ADDR'] ."</td><td>SERVER_ADDR</td></tr>";
echo "<tr><td>" .$_SERVER['SERVER_NAME'] ."</td><td>SERVER_NAME</td></tr>";
echo " </table>";
?>
4

3 回答 3

1

我的印象是,您将获得流量来自何处的地址,因此,如果您想始终针对公共接口采取行动,无论您的请求来自何处,您都必须忽略$_SERVER['SERVER_ADDR']并确定 IP你想在代码中处理(硬编码,分析接口表并寻找不在专用网络上的东西,你有什么)。

于 2009-08-18T19:40:13.787 回答
1

您应该始终从公共网络中获取公共 IP,从私有网络中的人员那里获取私有 IP。没有理智的方法可以确保您始终获得公共 IP,也没有任何意义

于 2009-08-18T19:42:05.390 回答
0

我认为这是在您设置域时由 Apache 处理的。Apache 建议每个 ip 使用一个单独的守护进程来保持它们的一致性: http ://httpd.apache.org/docs/1.3/vhosts/ip-based.html

为每个虚拟主机创建单独的 httpd 安装。对于每次安装,使用配置文件中的 Listen 指令来选择守护程序服务的 IP 地址(或虚拟主机)。例如

`Listen www.smallco.com:80`

建议您使用 IP 地址而不是主机名(请参阅DNS 警告)。

或者

您可能可以使用您的/etc/hosts文件来确保您选择的主机名始终解析为所需的 IP。有关. _ _/etc/hosts

于 2009-08-18T19:39:20.980 回答