Apache或PHP替换主机名

时间:2015-04-11 00:50:26

标签: php linux apache routing lan

将以下方式重新启动我的PHP查询(CURL,fsockopen,file_get_contents) source.com到x.x.x.x

赢得操作系统:

c:\Windows\System32\drivers\etc\hosts
x.x.x.x source.com

Linux操作系统:

$ sudo gedit /etc/hosts
x.x.x.x source.com

是否可以在Apache或PHP配置级别执行此操作(即,不会干扰hosts文件)?

1 个答案:

答案 0 :(得分:1)

所以你想强制domain1.com的DNS解析到另一个IP(比如domain2.com的IP),但是不想使用/etc/hosts做这个并且想做它仅在Apache或PHP配置中。

问题在于,问题是PHP使用您在/etc/resolv.conf/etc/hosts中设置的服务器DNS设置作为覆盖,而Apache只是一个Web服务器,因此无法更改应用程序的逻辑或控制它联网。

这里更干净的是将domain2.com的IP保存在php配置文件中并使用curl而不是domain1.com调用该IP,您仍然可以添加Host: domain1.com标题如果需要,可以进行HTTP调用。

编辑:这是一个在PHP中使用curl的例子。

让我们说

  • domain1.com的IP为1.1.1.1
  • domain2.com的IP为2.2.2.2

如果您的目标是使用域2.2.2.2来呼叫domain1.com,则只需更改HTTP请求的Host标头,如下所示:

<?php
$ch = curl_init('http://2.2.2.2/');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: domain1.com'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch);