在专用服务器上使用多个外部 IP?

在专用服务器上使用多个外部 IP?

所以我购买了专用服务器,提供商说我有 4 个可用 IP。假设这些 IP 是 ip1、ip2……ip4,因此我想将我的专用服务器设置为在这些 IP 上运行多个域,例如 ip1 上的 domain1……我这样做毫无问题,现在我想要当我在 domain1/script.php 上运行 php 脚本时,此脚本从 whatismyip.com 获取数据(file_get_contents())(仅举例)whatismyip.com 显示 ip1,而当我在 domain2 上运行时,它显示 ip2,等等。所以这意味着每个域都有自己独立的外部 IP,我需要帮助如何在基于 linux(CentOS)的服务器上设置它。我知道这是可能的,VPS 就是其工作原理的示例,但我想知道解决方案在哪里,我需要从 PHP 代码启动自定义 linux 脚本,还是 apache 配置或第三个选项?如果您知道解决方案,请帮助我。提前谢谢您。

答案1

如果你专门使用,file_get_contents则需要使用stream_create_context函数调用来创建上下文并将其绑定到你想要的特定 IP。像这样:

$opts = array(
    'socket' => array(
        'bindto' => '192.168.0.100:0',
    ),
);
$context = stream_context_create($opts);
echo file_get_contents('http://whatismyip.com', false, $context);

这将让您控制哪个 IP 用于出站连接。

编辑:参见http://www.php.net/manual/en/context.socket.php了解更多详情。

答案2

1)您需要向 DNS 提供商注册域名以指向您想要的 IP 地址:

主机 1.com -> 10.1.1.1 主机 2.com -> 10.1.1.2 主机 3.com -> 10.1.1.3 主机 4.com -> 10.1.1.4

2)尝试像这样在 apache 中创建虚拟主机:但为每个 IP 创建一个虚拟主机条目,这样最终就会得到 4 个虚拟主机。

<VirtualHost 10.1.1.1>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/host1.com
    ServerName host1.com
    ErrorLog /var/log/httpd/host1.com-error_log
    TransferLog /var/log/httpd/host1.com-access_log
</VirtualHost> 

相关内容