我有一个在本地主机/端口80上运行Apache的Ubuntu服务器。它的域名是sub.domain.com
如果我在该机器上向http:// localhost发出一个curl请求,它将会立即出现'couldnt connect to host'错误。
如果我在该机器上向sub.domain.com发出curl请求,它将在无限循环中坐在那里,直到它在几分钟后超时。
如果我在另一台机器的web浏览器中打开sub.domain.com,它会显示我的html页面。
如果我用另一台机器向sub.domain.com发出curl请求,它将连接。
这里的交易是什么?
您的评论:“它侦听192.168.2.1,然后公共IP回送设备是127.0.0.1”。 那么,Apache 是不是在127.0.0.1上监听? 如果是这样的话,那就是你的问题。 configurationApache以侦听所有接口,或者至less将回环接口添加到Apache正在侦听的接口上。
下一个问题:“如果我在该机器上向sub.domain.com发出一个curl请求,它将在无限循环中坐在那里,直到它在几分钟后超时。 ping sub.domain.com你的ping sub.domain.com时,你会得到什么? 这个问题就像是一台机器上的名称parsing问题,因为您可以从另一台机器成功连接。
您可能需要使用curl指定主机头,否则Apache不知道要显示哪个页面 – 取决于您如何设置localhost可能会显示apache默认页面,而您的虚拟主机(sub.domain.com)将显示您期望的页面。
尝试使用:
curl -H "Host:sub.domain.com" 127.0.0.1
从另一台机器上ping sub.domain.com并在响应中loggingip地址(xxx.yyy.zzz.www)。 那么从apache机器上使用:
curl -H "Host:sub.domain.com" xxx.yyy.zzz.www