PHP 5 $ _ SERVER [ 'SERVER_ADDR']有多个IP的
-
18-09-2019 - |
题
我正在与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的任何理智的方式,也不是有道理的。
不隶属于 StackOverflow