我的服务器中有 3 个 IP,我想用它们来增加 twitter API 限制。
如何在centos 6.1 httpd.conf
(Apache 2.3.1)中为目录设置不同的IP
我在底部添加了这些行httpd.conf
<VirtualHost NEW IP:80>
ServerName mydomain.com/subdir
ServerAlias www.mydomain.com/subdir
DocumentRoot /var/www/html/subdir
<directory "/var/www/html/subdir">
Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Allow from all
</directory>
</VirtualHost>
但是当我/var/www/html/subdir/index.php
用代码测试时
<?php
function get_server_ip() {
if (isset($_SERVER)) {
if($_SERVER['SERVER_ADDR']) {
$server_ip = $_SERVER['SERVER_ADDR'];
}else{
$server_ip = $_SERVER['LOCAL_ADDR'];
}
}else {
$server_ip = getenv('SERVER_ADDR');
}
return $server_ip;
}
echo get_server_ip();
?>
它仍然返回旧IP(我的服务器的默认IP)。那么这可能吗?如何实现?如果不能,如何使用 3 个 IP 来增加 twitter API 限制。
答案1
仅仅进行 apache 配置是不够的。要使其正常工作,您必须在 Centos (RedHat) 机器中配置多个 IP 地址。
假设您只有一个物理网络接口eth0
,那么您有一个包含所有相关参数的文件:
$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.1.1
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
(这是 IP=192.168.1.1 的静态 IP 配置示例,您的配置可能会有所不同)
所有这些都在这里解释: CENTOS-网络配置文件和CENTOS-界面配置文件
要将另一个 IP 分配给同一个物理网络接口,eth0
请执行以下操作(如root
):
$ cd /etc/sysconfig/network-scripts/
$ cp ifcfg-eth0 ifcfg-eth0:1
$ vi ifcfg-eth0:1
然后将 IPADDR 更改为新文件(并检查/更改所有其他参数)
您可以对第三个新 IP 执行相同的操作cp ifcfg-eth0 ifcfg-eth0:2
并编辑文件。
然后你必须重新启动网络以应用更改(之前停止 apache):
$ service network restart
检查新配置:
$ ifconfig
您将看到列出的接口配置eth1
, eth1:1
, eth1:2
(可能还有更多接口,例如lo
-> Loopback )