nginx多域名轉(zhuǎn)發(fā)的實現(xiàn)
前言
昨天碰到nginx做多域名轉(zhuǎn)發(fā),簡單總結(jié)下nginx的使用,此文只是便于開發(fā)理解,并不會涉入太深的東西。有錯誤的地方,還望大家多指正。
基礎(chǔ)概念
DNS
DNS是Domain Name System的縮寫,即域名系統(tǒng)。DNS是internet的一項服務(wù),一般叫域名服務(wù)或者域名解析服務(wù),主要是提供網(wǎng)站域名與ip地址的相互轉(zhuǎn)換的服務(wù)。
域名和IP的對應(yīng)關(guān)系
域名與IP地址之間是呈一一對應(yīng)的關(guān)系,但多個域名可以對應(yīng)同一個IP地址。就像一個人的姓名和身份證號碼之間的關(guān)系,顯然記憶人的名字要比身份證號容易的多。IP地址是網(wǎng)絡(luò)上標(biāo)識用戶站點(diǎn)的數(shù)字地址,為了簡單好記,采用域名來代替IP地址表示站點(diǎn)地址,DNS講域名解析成IP地址,使其一一對應(yīng)。
DNS工作原理
在Internet上,一個域名要由兩臺域名服務(wù)器提供“權(quán)威性的”域名解析。如果是國際域名,域名注冊管理機(jī)構(gòu)就是Interinc,如果是國內(nèi)域名,域名注冊管理機(jī)構(gòu)就是CNNIC。所有的域名必須在兩個注冊機(jī)構(gòu)上注冊才能正常使用。
比如,你現(xiàn)在要訪問一個網(wǎng)站,例如www.baidu.com,你的電腦需要知道這個站點(diǎn)的IP地址是多少才能訪問。于是它會自動向您所在區(qū)域的“主控DNS”服務(wù)器發(fā)出詢問,即“www.baidu.com”的IP是多少?如果該服務(wù)器上沒有該域名的記錄,它會到上一級的DNS去查找,一直重復(fù)進(jìn)行直到找到為止,如果到最后一級仍然沒有找到。此時會到權(quán)威性的DNS上查找,然后把對應(yīng)的ip信息返回給你的電腦。你的電腦就可以與www.baidu.com對應(yīng)的服務(wù)器進(jìn)行通信了。這樣一級一級的查詢被稱為“遞歸式”的查詢。
hosts文件
hosts文件是本地的一個無后綴的系統(tǒng)文件,需要管理員權(quán)限才能修改其內(nèi)容。從上面DNS的解析過程可以看出,每次DNS解析可能會經(jīng)過很多DNS服務(wù)器的轉(zhuǎn)發(fā)最終才能獲取到真正的IP地址,這樣會很沒效率。所以在計算機(jī)的本地也有一個DNS解析文件,即hosts文件。當(dāng)你把hosts中的 www.baidu.com指向正確的百度服務(wù)器地址的時候,電腦會與正確的服務(wù)器進(jìn)行交互。如果本地hosts,沒有配置映射關(guān)系,那么它會到局域網(wǎng)的DNS服務(wù)器尋找對應(yīng)的映射關(guān)系。如果仍然沒有,它就會在本地對應(yīng)節(jié)點(diǎn)的DNS去查找,重復(fù)上面所說的步驟。
nginx反向代理
代理:其實就是中介,A和B本來可以直連,但是在A和B之間加入了C。 正向代理
即上面的dns,它代理的是客戶端,為客戶端收發(fā)請求,對server斷是透明的。用瀏覽器訪問 http://www.google.com 時,被殘忍的block,于是你可以在國外搭建一臺代理服務(wù)器,讓代理幫我去請求google.com,代理把請求返回的相應(yīng)結(jié)構(gòu)再返回給我。
反向代理
即nginx的一個功能,它代理的是服務(wù)器,它為server端轉(zhuǎn)發(fā)請求,對client端是透明的。當(dāng)我們請求 www.baidu.com 的時候,就像撥打10086一樣,背后可能有成千上萬臺服務(wù)器為我們服務(wù),但具體是哪一臺,你不知道,也不需要知道,你只需要知道反向代理服務(wù)器是誰就好了,www.baidu.com 就是我們的反向代理服務(wù)器,反向代理服務(wù)器會幫我們把請求轉(zhuǎn)發(fā)到真實的服務(wù)器那里去。Nginx就是性能非常好的反向代理服務(wù)器,用來做負(fù)載均衡。
nginx加hosts做多域名映射
比如你的兩個應(yīng)用的域名是a.test.com和b.test.com。
找到C:WindowsSystem32driversetc目錄下的hosts文件,用超級管理員權(quán)限打開。在文件尾部加入
a.test.com 127.0.0.1 b.test.com 127.0.0.1
修改nginx.conf文件(由于nginx.conf的配置很多,這里只是用最簡單的事例說明)在http的{}內(nèi)部加入server。加入內(nèi)容如下:
server { listen 80; server_name a.test.com; //填入自己項目對應(yīng)的域名 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:8888; //填入自己項目的ip加端口號(此處的項目沒有工程上下文,只有端口號) } } server { listen 80; server_name b.test.com; //填入自己項目對應(yīng)的域名 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:8889; //填入自己項目的ip加端口號(此處的項目沒有工程上下文,只有端口號) } }
修改完以后,再重新加載nginx配置文件
nginx.exe -s reload
到此這篇關(guān)于nginx多域名轉(zhuǎn)發(fā)的實現(xiàn)的文章就介紹到這了,更多相關(guān)nginx多域名轉(zhuǎn)發(fā)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx部署前端post請求405?not?allowed問題解決
在配置前端項目的時候遇到了一個post請求405 not allowed,簡單記錄一下如何配置,這篇文章主要給大家介紹了關(guān)于nginx部署前端post請求405?not?allowed問題解決方法,需要的朋友可以參考下2023-09-09添加Nginx代理配置只允許內(nèi)部IP訪問的實現(xiàn)方法
在本篇文章里小編給大家整理的是一篇關(guān)于添加Nginx代理配置只允許內(nèi)部IP訪問的實現(xiàn)方法的文章,有需要的朋友們可以學(xué)習(xí)下。2019-10-10在Nginx服務(wù)器中配置針對TCP的負(fù)載均衡的方法
這篇文章主要介紹了在Nginx服務(wù)器中配置針對TCP的負(fù)載均衡的方法,另外還介紹了TCP負(fù)載均衡的執(zhí)行原理,需要的朋友可以參考下2015-12-12Nginx配置缺少導(dǎo)致CSS不起作用的問題及解決方法
在Web開發(fā)中,確保樣式表正確加載是前端顯示正常工作的關(guān)鍵,然而,有時候即使CSS文件的路徑和代碼本身沒有問題,CSS樣式也可能無法正確應(yīng)用,本文將分享一個常見的問題——Nginx配置缺少導(dǎo)致的CSS不起作用,以及如何解決這個問題,感興趣的朋友一起看看吧2024-07-07