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í)的查詢被稱(chēng)為“遞歸式”的查詢。
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)文章
詳解如何設(shè)置Nginx實(shí)現(xiàn)內(nèi)外網(wǎng)端口映射
在 Nginx 中實(shí)現(xiàn)內(nèi)外網(wǎng)端口映射是一種常見(jiàn)的做法,本文詳細(xì)介紹如何設(shè)置 Nginx 實(shí)現(xiàn)內(nèi)外網(wǎng)端口映射,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-10-10
Nginx 合并請(qǐng)求連接且加速網(wǎng)站訪問(wèn)實(shí)例詳解
這篇文章主要介紹了Nginx 合并請(qǐng)求連接且加速網(wǎng)站訪問(wèn)實(shí)例詳解,瀏覽器的并發(fā)請(qǐng)求數(shù)目限制是針對(duì)同一域名的,同一時(shí)間針對(duì)同一域名下的請(qǐng)求有一定數(shù)量限制,超過(guò)限制數(shù)目的請(qǐng)求會(huì)被阻塞,需要的朋友可以參考下2019-07-07
解決Nginx 配置 proxy_pass 后 返回404問(wèn)題
這篇文章主要介紹了Nginx 配置 proxy_pass 后 返回404問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
詳解Nginx的超時(shí)keeplive_timeout配置步驟
Nginx 處理的每個(gè)請(qǐng)求均有相應(yīng)的超時(shí)設(shè)置,本文主要介紹了Nginx的超時(shí)keeplive_timeout配置步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
詳解Nginx反向代理跨域基本配置與常見(jiàn)誤區(qū)
這篇文章主要介紹了詳解Nginx反向代理跨域基本配置與常見(jiàn)誤區(qū),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
Nginx服務(wù)器配置https安全協(xié)議的實(shí)現(xiàn)
HTTP是互聯(lián)網(wǎng)中最常用的協(xié)議,用于從服務(wù)器傳輸超文本到瀏覽器,HTTPS是HTTP的安全版本,本文就來(lái)介紹一下Nginx服務(wù)器配置https安全協(xié)議的實(shí)現(xiàn),感興趣的可以了解一下2024-09-09

