nginx 中通過server_name listen的方式配置多個服務器


nginx 中通過server_name listen的方式配置多個服務器

現在假設有三台主機,他們的ip分別為:

A: 192.168.1.167

B: 192.168.1.168

C: 192.168.1.169

nginx作為代理服務器部署在主機 A 上面,B 和 C 作為兩台應用服務器。現在想實現通過A訪問B和C,有以下兩種方式:

一、通過不同的listen實現對B和C的訪問,實現方式如下:在nginx.conf中添加兩個server

server {
listen 8081;
server_name test1;
location / {
proxy_pass http://192.168.1.168:9093;
}
}

server {
listen 8082;
server_name test2;
location / {
proxy_pass http://192.168.1.169:9093;
}
}

注意:1、在以上配置中,server_name可以任意取名

2、主機B的訪問方式通過A監聽端口8081來代理,訪問方式:http://192.168.1.167:8081

3、主機C的訪問方式通過A監聽端口8082來代理,訪問方式:http://192.168.1.167:8082

二、通過相同的listen,不同的server_name實現對B和C的訪問,即通過不同的域名方式訪問B和C,實現方式如下:

server {
listen 8080;
server_name www.test1.com;
location / {
proxy_pass http://192.168.1.168:9093;
}
}

server {
listen 8080;
server_name www.test2.com;
location / {
proxy_pass http://192.168.1.169:9093;
}
}

注意:1、在以上配置中,server_name表示B和C的域名

2、主機B和C的訪問方式都通過A監聽端口8080來代理

3、由於是測試,需要在測試端修改hosts文件,即在hosts文件中添加以下內容

192.168.1.168 www.test1.com

192.168.1.169 www.test2.com

4、訪問方式:在修改了hosts文件的電腦上按以下方式分別訪問B和C:

http://www.test1.com:8080

http://www.test2.com:8080

其中:

linux下hosts所在路徑:/etc/hosts

windows下hosts所在路徑:C:\Windows\System32\drivers\etc\hosts

server name 為虛擬服務器的識別路徑。因此對於相同的listen不同的域名會通過請求頭中的HOST字段,匹配到特定的server塊,轉發到對應的應用服務器中去。

基於域名的虛擬主機(name based virtual host),配置的方法就是多個虛擬主機綁定同一個端口,通過server_name區分。

基於的理論基礎就是http協議中會帶一個HOST頭,web server通過這個頭判斷具體交給哪個虛擬主機響應。如果沒有一個匹配,那么通常哪個在前哪個優先響應,這個叫默認虛擬主機,apache有個_default_屬性可以強行指定某一個虛擬主機為默認虛擬主機。如下圖

 

hosts文件指定IP與域名的對應關系(如:192.168.1.169 www.test2.com),對域名的訪問會映射成對應的IP。這個ip就是nginx的公網IP 。然后server name 為虛擬服務器的識別路徑。因此不同的域名會轉發到對應的應用服務器中去。

接下來有時間會分析下 upstream、conf.d

參考:https://blog.csdn.net/sollor525/article/details/81360411

https://blog.csdn.net/cheng_kohui/article/details/82930464

https://segmentfault.com/q/1010000011245338/a-1020000011245502

http://www.nginx.cn/doc/standard/httpcore.html
————————————————
版權聲明:本文為CSDN博主「thlzjfefe」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/thlzjfefe/article/details/84489311


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM