摘要:反向代理負載均衡虛擬主機配置通過本章你將學會利用配置多臺虛擬主機,清楚代理服務器的作用,區分正向代理和反向代理的區別,搭建使用反向搭理和負載均衡,了解常用配置的說明。最重要的是反向代理,負載均衡。
Nginx 反向代理 負載均衡 虛擬主機配置
通過本章你將學會利用Nginx配置多臺虛擬主機,清楚代理服務器的作用,區分正向代理和反向代理的區別,搭建使用Nginx反向搭理和負載均衡,了解Nginx常用配置的說明。即學即用,你還在等什么?一睹為快先了解Nginx的三大功能
Nginx 可以作為一臺http服務器。可以做網站靜態服務器,比如圖片服務器,高效,減輕服務器壓力。同時它也支持https服務。
Nginx 可以配置多臺虛擬主機。可以實現在一臺服務器虛擬出多個網站效果,省錢。
Nginx 最重要的是反向代理,負載均衡。在服務器集群中,通過Nginx通過反向代理讓性能高的服務器分擔更多的負載,從而實現負載均衡的效果,利用率高。
效果圖:包含基于ip的虛擬主機測試,基于域名的虛擬主機測試,反向代理和負載均衡的測試
環境:CentOS 7 , nginx-1.13.6 ,
說明:Nginx 反向代理和負載均衡的操作前提都是基于域名的虛擬主機。不同的tomcat模擬不同的服務器,和生產環境最大的區別就是ip和port
Nginx 安裝:http://www.cnblogs.com/itdrag...
Nginx http服務器:http://www.cnblogs.com/itdrag...
虛擬主機是一種特殊的軟硬件技術,它可以將網絡上的每一臺計算機分成多個虛擬主機,每個虛擬主機都可以獨立對外提供www服務。從而實現一臺主機能對外提供多個web服務,而且每個虛擬主機之間是互不影響的。
Nginx提供了三種虛擬主機配置方式,1、基于ip的虛擬主機,2、基于端口的虛擬主機,3、基于域名的虛擬主機。最常用的是第三種,相對于 ip地址和端口號,域名更方便記憶和使用。
[root@itdragon ~]# cd /etc/sysconfig/network-scripts/ [root@itdragon network-scripts]# ip addr 1: lo:mtu 65536 qdisc noqueue state UNKNOWN qlen 1 2: ens33: mtu 1500 qdisc pfifo_fast state UP qlen 1000 inet 192.168.225.131/24 brd 192.168.225.255 scope global dynamic ens33 [root@itdragon network-scripts]# vim ifcfg-ens33 # 添加 IPADDR1="192.168.225.132" IPADDR2="192.168.225.133" [root@itdragon network-scripts]# systemctl restart network [root@itdragon network-scripts]# ip addr 2: ens33: mtu 1500 qdisc pfifo_fast state UP qlen 1000 inet 192.168.225.131/24 brd 192.168.225.255 scope global dynamic ens33 inet 192.168.225.132/24 brd 192.168.225.255 scope global secondary ens33 inet 192.168.225.133/24 brd 192.168.225.255 scope global secondary ens33 [root@itdragon ~]# cd /usr/local/nginx [root@itdragon nginx]# cp -r html/ html-131/ [root@itdragon nginx]# cp -r html/ html-132/ [root@itdragon nginx]# cp -r html/ html-133/ [root@itdragon nginx]# vim html-131/index.html [root@itdragon nginx]# vim html-132/index.html [root@itdragon nginx]# vim html-133/index.html [root@itdragon nginx]# vim conf/nginx.conf # 添加 server { listen 80; server_name 192.168.225.132; location / { root html-132; index index.html index.htm; } } server { listen 80; server_name 192.168.225.133; location / { root html-133; index index.html index.htm; } } [root@itdragon nginx]# sbin/nginx -s reload
第一步:執行命令ip addr 打印協議地址,得知網卡名是ens33,ip地址是192.168.225.131
第二步:進入到/etc/sysconfig/network-scripts/ 修改ifcfg-ens33 文件添加兩個ip地址
第三步:重啟網絡,并檢查配置是否生效,發現ens33對應三個ip地址
第四步:進入到/usr/local/nginx/ 目錄下,拷貝三份html目錄,并分別修改index.html 文件便于區分測試
第五步:修改Nginx配置文件,監聽的端口不變,修改server_name為對應ip地址,修改root為對應的html目錄
第六步:重啟Nginx服務,在瀏覽器上分別訪問三個ip地址,觀察頁面變化
若你發現不同的ip地址打印不同頁面,和效果圖相似,則代表配置成功。
基于端口的虛擬主機和基于ip的虛擬主機配置幾乎一樣,只是在修改Nginx配置文件時,只修改監聽的端口和root對應的目錄,其他的沒有變。這里就不貼命令了。
基于域名的虛擬主機這是Nginx比較常用的配置,也是有利于人類使用的配置方式。這里通過修改window系統下的host文件來模擬DNS服務器。
# Windows C:WindowsSystem32driversetchosts文件 # nginx 域名配置虛擬主機 192.168.225.131 www.itdragon.com 192.168.225.131 picture.itdragon.com 192.168.225.131 search.itdragon.com # CentOS [root@itdragon nginx]# cp -r html/ html-search [root@itdragon nginx]# cp -r html/ html-picture [root@itdragon nginx]# vim html-search/index.html [root@itdragon nginx]# vim html-picture/index.html [root@itdragon nginx]# vim conf/nginx.conf server { listen 80; server_name search.itdragon.com; location / { root html-search; index index.html index.htm; } } server { listen 80; server_name picture.itdragon.com; location / { root html-picture; index index.html index.htm; } } [root@itdragon nginx]# sbin/nginx -s reload
第一步:在window環境中,修改host文件,添加ip 域名映射關系,用來模擬DNS服務器
第二步:進入到/usr/local/nginx/ 目錄下,拷貝兩份html目錄,分別修改index.html 文件便于區分測試
第三步:修改Nginx配置文件,監聽的端口不變,修改server_name為對應域名地址,修改root為對應的html目錄
第四步:重啟Nginx服務,在瀏覽器上分別訪問兩個域名地址,觀察頁面變化
若你發現不同的域名地址打印不同頁面,和效果圖相似,則代表配置成功。
在了解Nginx 反向代理之前,我們先熟悉一下什么是代理服務器
代理服務器:是一個夾在客戶機和目標主機中間的服務器。能提高客戶機訪問響應速度,還能設置防火墻過濾不安全信息。
響應速度快:客戶機發送請求,代理服務器接收請求后,再轉發給目標主機。目標主機接收請求并將數據返回給代理服務器,代理服務器將數據返回給客戶機同時也會保存數據到本地。若客戶機下次有相同的請求,則直接從本地數據返回。從而提高了響應的速度。
設置防火墻:因為代理服務器夾在客戶機和目標主機中間。客戶機所有的請求都會經過代理服務器,所以如果在代理服務器上設置防火墻,則可以過濾一些不安全的信息,同時也方便管理。
清楚了代理服務器后,我們再來了解正向代理和反向代理的區別
正向代理:顧客:"服務員,我就要廚師A做的七彩紅燒肉"; 服務員:"好嘞,我這就安排廚師A給您做!"
反向代理:顧客:"服務員,我要一份七彩紅燒肉"; 服務員:"好嘞,我們的廚師B炒菜賊好吃!"
不知道大家看懂沒有。顧客就是客戶機,服務員就是代理服務器,廚師們就是目標主機。正向代理就相當于客戶機明確指定目標主機提供服務(目標主機被動接收請求)。反向代理就相當于客戶機提供需求,代理服務器從一群目標主機中找一臺去實現該需求(目標主機主動接收請求)。
現在開始配置Nginx的反向代理
[root@itdragon ~]# vim /usr/local/solr/tomcat1/webapps/ROOT/index.jsp [root@itdragon ~]# vim /usr/local/solr/tomcat2/webapps/ROOT/index.jsp [root@itdragon ~]# cd /usr/local/nginx [root@itdragon nginx]# vim conf/nginx.conf upstream searchserver { server 192.168.225.133:8081; } upstream pictureserver { server 192.168.225.133:8082; } server { listen 80; server_name search.itdragon.com; location / { proxy_pass http://searchserver; index index.html index.htm; } } server { listen 80; server_name picture.itdragon.com; location / { proxy_pass http://pictureserver; index index.html index.htm; } } [root@itdragon nginx]# sbin/nginx -s reload
第一步:準備兩個tomcat服務器,端口分別是8081和8082,并分別修改index.jsp 文件便于區分測試
第二步:進入到/usr/local/nginx/ 目錄下,修改Nginx配置文件。upstream 定義每個設備的狀態,server 配置服務,server_name 指定域名,proxy_pass 代理轉發到那臺設備上
第三步:重啟服務,在瀏覽器上輸入不同的域名,會跳到對應的頁面
Nginx的反向代理其實是在做請求的轉發,后臺有多個http服務器提供服務,Nginx的功能就是把請求轉發給后面的服務器,并決定把請求轉發給哪臺服務器。
反向代理流程
瀏覽器訪問search.itdragon.com,通過本地host文件域名解析,找到192.168.225.131 Nginx虛擬主機,Nginx接收客戶機請求,找到server_name為search.itdragon.com的節點,再根據proxy_pass對應的http路徑,將請求轉發到upstream searchserver上,即端口號為8081的tomcat服務器。
客戶機訪問 ---> search.itdragon.com ---> host ---> Nginx ---> server_name ---> proxy_pass ---> upstream---> tomcat
負載均衡 在高性能的主機上分配更多的負載,在性能低的主機分配少一些的負載,充分利用主機的性能,將其服務器的總壓力。Nginx的 upstream默認是以輪詢的方式實現負載均衡,也可以分配權值。
[root@itdragon ~]# vim /usr/local/solr/tomcat3/webapps/ROOT/index.jsp [root@itdragon ~]# vim /usr/local/solr/tomcat4/webapps/ROOT/index.jsp [root@itdragon ~]# cd /usr/local/nginx [root@itdragon nginx]# vim conf/nginx.conf upstream pictureserver { server 192.168.225.133:8082 weight=2; server 192.168.225.133:8083 weight=1; server 192.168.225.133:8084 weight=1; } [root@itdragon nginx]# sbin/nginx -s reload
第一步:新增兩個tomcat服務器,端口分別為8083和8084,并分別修改index.jsp 文件便于區分測試
第二步:進入到/usr/local/nginx/ 目錄下,修改Nginx配置文件,在pictureserver 內新增兩個server
第三步:重啟服務
負載均衡的配置是在反向代理的基礎上修改的,所以請先完成反向代理的配置。
events { # 工作模式 worker_connections 1024; # 最大連接數 } http { # 配置http服務器 include mime.types; # 定義mime的文件類型 default_type application/octet-stream; # 默認文件類型 sendfile on; # 開啟 sendfile 函數(zero copy 方式)輸出文件 keepalive_timeout 65; # 連接超時時間,單位秒 upstream pictureserver { # 定義負載均衡設備的ip和狀態 server 192.168.225.133:8081 ; # 默認權重值為一 server 192.168.225.133:8082 weight=2; # 值越高,負載的權重越高 server 192.168.225.133:8083 down; # 當前server 暫時不參與負載 server 192.168.225.133:8084 backup; # 當其他非backup狀態的server 不能正常工作時,才請求該server,簡稱熱備 } server { # 設定虛擬主機配置 listen 80; # 監聽的端口 server_name picture.itdragon.com; # 監聽的地址,多個域名用空格隔開 location / { # 默認請求 ,后面 "/" 表示開啟反向代理,也可以是正則表達式 root html; # 監聽地址的默認網站根目錄位置 proxy_pass http://pictureserver; # 代理轉發 index index.html index.htm; # 歡迎頁面 deny 127.0.0.1; # 拒絕的ip allow 192.168.225.133; # 允許的ip } error_page 500 502 503 504 /50x.html;# 定義錯誤提示頁面 location = /50x.html { # 配置錯誤提示頁面 root html; } }
具體配置詳情可以參考:http://blog.csdn.net/happydre...
總結1 Nginx 通過修改nginx.conf server_name配置,達到配置多臺基于ip,基于域名的虛擬主機
2 Nginx 通過修改nginx.conf upstream 和 proxy_pass配置,達到反向代理效果
3 Nginx 通過修改nginx.conf upstream server 狀態,達到負載均衡效果
4 代理服務器有提高客戶端獲取數據的速度,和方便管理設置防火墻的功能
到這里Nginx的多虛擬主機,反向代理和負載均衡就結束了,感謝閱讀!歡迎點贊!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39717.html
摘要:負載均衡嚴格來說,僅僅是作為反向代理的使用的,但是因為這個反向代理功能表現的效果是負載均衡機器的效果,因此負載均衡是特殊的反向代理。 反向代理 反向代理指的是以代理服務器接收用戶的的訪問請求,代理用戶向內部服務器重新發起請求,最后把內部服務器的響應信息返回給用戶。這樣,代理服務器對外就表現為一臺服務器,而訪問內部服務器的客戶端用的就是代理服務器,而不是真實網站訪問用戶。 為什么使用反向...
摘要:本文介紹三者之間的關系,以及反向代理和負載均衡的配置。先使用負載均衡模塊找到一臺主機,再使用模塊實現與這臺主機的交互。負載均衡配置該例定義了一個的負載均衡配置,通過反向代理指令應用這個配置。 本文介紹 PHP-FPM,Nginx,FastCGI 三者之間的關系,以及 Nginx 反向代理和負載均衡的配置。 PHP-FPM,Nginx,FastCGI 之間的關系 FastCGI 是一個協...
摘要:今天無聊,把上幾天自己測試的作反向代理負載均衡的步驟記錄下來,以供學習記錄。反向代理,我個人理解是通過一臺反向代理服務器,把客戶端的把有請求按照一定的規則分發給后臺的服務器。 今天無聊,把上幾天自己測試的nginx作反向代理負載均衡的步驟記錄下來,以供學習記錄。反向代理,我個人理解是通過一臺反向代理服務器,把客戶端的把有請求按照一定的規則分發給后臺的服務器。nginx作反向代理服務器的...
閱讀 1155·2023-04-25 17:28
閱讀 3531·2021-10-14 09:43
閱讀 3954·2021-10-09 10:02
閱讀 1942·2019-08-30 14:04
閱讀 3128·2019-08-30 13:09
閱讀 3269·2019-08-30 12:53
閱讀 2896·2019-08-29 17:11
閱讀 1822·2019-08-29 16:58