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