我正在与2网络接口一个Ubuntu轻快服务器配置:一个公共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>";
?>
有帮助吗?

解决方案

我的印象是,你会得到地方的流量从未来的地址,所以如果你想总是相对于公共接口无论在哪里,你的请求来自行动,你必须忽略$_SERVER['SERVER_ADDR']并确定要处理的代码(硬编码,分析接口表和寻找的东西是不是一个专用网络上,什么具备的,你)的IP。

其他提示

我觉得这是Apache的,当你设置你的域处理。 阿帕奇建议使用每个IP独立的守护,让他们直: http://httpd.apache.org/docs/1.3/vhosts/ IP-based.html

  

对于每个虚拟主机创建一个单独的httpd安装。对于每个安装,使用Listen指令在配置文件中选择哪个IP地址(或虚拟主机)守护进程服务。 e.g。

`Listen www.smallco.com:80`
     

建议您使用IP地址而不是一个主机名(见 DNS警告的)。

您很可能使用你的/etc/hosts文件,以确保你选择的主机名始终解析所需的IP。参考: http://www.faqs.org/docs/securing/chap9sec95.html 为上/etc/hosts资讯

您应该总是让公众和人民的私有网络中的私有IP公网IP。有确保您始终获得公网IP的任何理智的方式,也不是有道理的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top