Linux
為什麼在獲取無法解析的頁面時 wget 會被重定向到 localhost?
我正在嘗試使用 wget 獲取一個不存在的(無法解析的主機名)頁面。我預計它會失敗,但事實並非如此。
這是一個成績單
[mark@cn ~]$ cat /etc/resolv.conf ; Google公開 名稱伺服器 8.8.8.8 名稱伺服器 8.8.4.4 [mark@cn ~]$ 主機不存在.example.com 找不到主機不存在的.example.com:3(NXDOMAIN) [mark@cn ~]$ wget -O - http://nonexistent.example.com/ --2010-09-05 22:12:09-- http://nonexistent.example.com/ 解決不存在的.example.com ... 205.178.189.131 正在連接到 nonexistent.example.com|205.178.189.131|:80... 已連接。 已發送 HTTP 請求,等待響應... 301 已永久移動 位置:http://127.0.0.1 [關注] --2010-09-05 22:12:09-- http://127.0.0.1/ 連接到 127.0.0.1:80... 已連接。 HTTP 請求已發送,等待響應... 200 OK 長度:524 [文本/html] 保存到:`STDOUT' 0% [] 0 --.- K/s (我的本地 Apache 提供的一些 HTML) 100%[=======================================>] 524 --.-K/ s 在 0s 2010-09-05 22:12:09 (62.5 MB/s) - `-' 保存 [524/524]
為什麼會這樣?有任何想法嗎?
作業系統:Centos 5.5 x86_64 網路:cloudnext 專用虛擬伺服器
我問是因為我在 Python 程式碼中嘗試過同樣的事情,並且正在發生類似的事情。發生了一些可疑的事情,我無法弄清楚是什麼。
您是否可能遺漏了
resolv.conf
列出您的搜尋域的部分?如果您的至少一個搜尋域具有萬用字元條目(或您的伺服器 FQDN 域),那麼
wget
真正解決的是nonexistent.example.com.your.domain.com.
. 這可能會導致配置為將客戶端重定向到 localhost 的 Web 伺服器,如果它獲取對未知 VHost 的查詢。在我看來,解決這個問題的正確方法是不使用萬用字元域,或者至少不將它們用作搜尋域。如果事實上您的伺服器的 FQDN 位於萬用字元域中,您可以通過將其放入您的
resolv.conf
:options ndots:1 search .