hosts配置管理
手動修改hosts:vim /etc/hosts
hosts工具:switchhost 、hozz、multiple-host
hosts檔案配置解析
那麼這個hosts檔案的作用是什麼呢?其是它是一個沒有副檔名的系統檔案,可以用記事本等工具開啟,作用就是將一些常用的網址域名與其對應的IP地址建立一個關聯“資料庫”,當用戶在瀏覽器中輸入一個需要登入的網址時,系統會首先自動從Hosts檔案中尋找對應的IP地址,一旦找到,系統會立即開啟對應網頁,如果沒有找到,則系統會再將網址提交DNS域名解析伺服器進行IP地址的解析。 Hosts檔案配置的對映是靜態的,如果網路上的計算機更改了需要及時更新IP地址,否則將不能訪問。 眾所周知,一次完成的HTTP請求過程可以分為以下幾步:
- 首先在瀏覽器中輸入網址
- 瀏覽器根據域名解析IP地址
- 瀏覽器根據解析的IP地址與web伺服器建立一個TCP連線
- 瀏覽器給伺服器傳送HTTP請求
- 伺服器的永久重定向響應
- 瀏覽器跟蹤重定向地址
- 伺服器處理請求
- 伺服器發回一個HTTP響應
- 釋放TCP連線
- 客戶端瀏覽器解析HTML內容
其中的第二步就和上面提到的hosts檔案有很重要的聯絡。瀏覽器訪問網站,要首先通過DNS伺服器把要訪問的網站域名解析成一個唯一的IP地址,之後,瀏覽器才能對此網站進行定位並且訪問其資料。 在引入DNS(Domain Name System,域名系統)之前,網路中的主機是將容易記憶的域名對映到IP地址並將它儲存在一個共享的靜態檔案hosts中,再由hosts檔案來實現網路中域名的管理。最初Internet非常小,僅使用這個集中管理的檔案就可以通過FTP為連入Internet的站點和主機提供域名的釋出和下載。每個Internet站點將定期地更新其主機檔案的副本,並且釋出主機檔案的更新版本來反映網路的變化。 但是,當Internet上的計算機迅速增加時,通過一箇中心授權機構為所有Internet主機管理一個主機檔案的工作將無法進行。檔案會隨著時間的推移而增大,這樣按當前和更新的形式維持檔案以及將檔案分配至所有站點將變得非常困難,甚至無法完成,於是才有了DNS伺服器。 作業系統規定,在進行DNS請求以前,先檢查自己的Hosts檔案中是否有這個域名和IP的對映關係。如果有,則直接訪問這個IP地址指定的網路位置,如果沒有,再向已知的DNS伺服器提出域名解析請求。也就是說Hosts的IP解析優先順序比DNS要高。
hosts檔案的作用:
- 加快域名解析
- 方便區域網使用者
一般區域網很少假設DNS伺服器,訪問這些伺服器時,就需要輸入難記的IP地址,這相當麻煩。(在golang實現跨域訪問一文中,之所以ajax請求本地搭建的伺服器時,需要輸入
http://127.0.0.1:8000/ajax
,而不是http://localhost:8000/ajax
,就是因為自己的hosts檔案中沒有配置相關IP資訊。 - 遮蔽網站 對於一些彈窗類的垃圾網站,我們可以利用Hosts把該網站的域名對映到錯誤的IP或本地計算機的IP,這樣就不用訪問了。在WINDOWS系統中,約定 0.0.0.0是錯誤的IP地址。
- 順利連線系統 一些資料庫伺服器,在訪問時如果直接輸入IP地址是不能訪問的,只能輸入伺服器名才能訪問。那麼我們配置好Hosts檔案,這樣輸入伺服器名就能順利連線了。
- 虛擬域名
很多時候,網站建設者需要把”軟環境“搭建好,再進行上傳除錯。但類似於郵件服務,則需要使用域名來輔助除錯,這時就可以將本地 IP 地址與一個”虛擬域名“做地址指向,就可以達到要求的效果。如:
127.0.0.1 網站域名
。
設定域名時注意:IP地址前面的“#”號需要去掉,例如下面的hosts檔案,192.30.255.113的IP地址前面沒有“#”。
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
192.30.255.113 github.com