Linux

為什麼在獲取無法解析的頁面時 wget 會被重定向到 localhost?

  • August 30, 2016

我正在嘗試使用 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 .

引用自:https://serverfault.com/questions/178329