本地nginx多域名映射

前言:nginx

  工做兩年多了,一直感受技術上沒有太大的長進,好多東西感受會可是給別人講起來的時候又感受和沒學過同樣。之後但願能堅持寫博客,把看過的東西都一點一滴積累下來。言歸正傳,今天要說的是nginx與hosts以及hosts的一個小插件的使用,此文只是便於開發理解,並不會涉入太深的東西。有錯誤的地方,還望你們多指正。chrome

1.幾個概念瀏覽器

1)DNS緩存

  DNS是Domain Name System的縮寫,即域名系統。DNS是internet的一項服務,通常叫域名服務或者域名解析服務,主要是提供網站域名與ip地址的相互轉換的服務。服務器

2)域名與ip之間的關係網絡

  域名與IP地址之間是呈一一對應的關係,但多個域名能夠對應同一個IP地址。就像一我的的姓名和身份證號碼之間的關係,顯然記憶人的名字要比身份證號容易的多。IP地址是網絡上標識用戶站點的數字地址,爲了簡單好記,採用域名來代替IP地址表示站點地址,DNS講域名解析成IP地址,使其一一對應。app

3)DNS是如何工做的?負載均衡

 

  在Internet上,一個域名要由兩臺域名服務器提供「權威性的」域名解析。若是是國際域名,域名註冊管理機構就是Interinc,若是是國內域名,域名註冊管理機構就是CNNIC。全部的域名必須在兩個註冊機構上註冊才能正常使用。性能

  下面用詳細事例說明:網站

  好比,你如今要訪問一個網站,例如www.baidu.com,你的電腦須要知道這個站點的IP地址是多少才能訪問。因而它會自動向您所在區域的「主控DNS」服務器發出詢問,即「www.baidu.com」的IP是多少?若是該服務器上沒有該域名的記錄,它會到上一級的DNS去查找,一直重複進行直到找到爲止,若是到最後一級仍然沒有找到。此時會到權威性的DNS上查找,而後把對應的ip信息返回給你的電腦。你的電腦就能夠與www.baidu.com對應的服務器進行通訊了。這樣一級一級的查詢被稱爲「遞歸式」的查詢。

4)hosts文件。

  hosts文件是本地的一個無後綴的系統文件,須要管理員權限才能修改其內容。從上面DNS的解析過程能夠看出,每次DNS解析可能會通過不少DNS服務器的轉發最終才能獲取到真正的IP地址,這樣會很沒效率。因此在計算機的本地也有一個DNS解析文件,即hosts文件。當你把hosts中的   www.baidu.com指向正確的百度服務器地址的時候,電腦會與正確的服務器進行交互。若是本地hosts,沒有配置映射關係,那麼它會到局域網的DNS服務器尋找對應的映射關係。若是仍然沒有,它就會在本地對應節點的DNS去查找,重複上面所說的步驟。

2.nginx的反向代理

   代理:其實就是中介,A和B原本能夠直連,可是在A和B之間加入了C。

  正向代理:即上面的dns,它代理的是客戶端,爲客戶端收發請求,對server斷是透明的。用瀏覽器訪問  時,被殘忍的block,因而你能夠在國外搭建一臺代理服務器,讓代理幫我去請求google.com,代理把請求返回的相應結構再返回給我。

   

   反向代理:即nginx的一個功能,它代理的是服務器,它爲server端轉發請求,對client端是透明的。當咱們請求 www.baidu.com 的時候,就像撥打10086同樣,背後可能有成千上萬臺服務器爲咱們服務,但具體是哪一臺,你不知道,也不須要知道,你只須要知道反向代理服務器是誰就行了,www.baidu.com 就是咱們的反向代理服務器,反向代理服務器會幫咱們把請求轉發到真實的服務器那裏去。Nginx就是性能很是好的反向代理服務器,用來作負載均衡。

     

 

3.使用nginx加hosts在本機作多域名映射

  好比你的兩個應用的域名是mem.test.com和memsys.test.com。

  1)找到C:\Windows\System32\drivers\etc目錄下的hosts文件,用超級管理員權限打開。在文件尾部加入

    mem.test.com 127.0.0.1

    memsys.test.com 127.0.0.1

  2)修改nginx.conf文件(因爲nginx.conf的配置不少,這裏只是用最簡單的事例說明)

    在http的{}內部加入server。加入內容以下:

server {
  listen 80;
  server_name mem.test.com;   //填入本身項目對應的域名
  charset utf-8;
  error_log logs/error.log;
  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://127.0.0.1:8082; //填入本身項目的ip加端口號(此處的項目沒有工程上下文,只有端口號)
  }
}

 

server {
  listen 80;
  server_name memsys.test.com;   //填入本身項目對應的域名
  charset utf-8;
  error_log logs/error.log;
  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://127.0.0.1:8083; //填入本身項目的ip加端口號(此處的項目沒有工程上下文,只有端口號)
  }
}

    修改完之後,再從新加載nginx配置文件,nginx.exe -s reload

  

4.chrome的hosts小插件

   平時在開發的時候常常須要在不一樣的環境切換,每次切換的時候還得修改hosts文件。因爲hosts在操做系統和瀏覽器中都有緩存,有時候修改hosts之後,dns解析不必定生效。形成開發的時候很麻煩。如今可使用chrome的hosts小插件。

   在google chrome的應用商店裏面搜索"HostAdmin App",直接安裝便可。安裝完成之後,在瀏覽器輸入chrome://apps/,打開就能看到剛剛安裝的插件。點擊進入以下界面:該插件支持單域名ip的切換,使用哪一個域名直接在對應的ip上打鉤便可,添加新的映射關係的時候能夠直接在hosts文件裏添加便可。另外在該插件中還有一個groups的概念,一個groups下面能夠定義多個域名與ip的映射關係。若是你的你有你的每一個環境下面有多個域名與ip的映射關係,你能夠採起這種方式。語法以下:在groups開始前加#====,在groups結束時加#====便可。

     

    修改之後hostAdmin效果

   

相關文章
相關標籤/搜索