Nginx:
Nginx作為面試中的大…小頭目,自然是不能忽視的,而以下兩點就是它能成為面試中頭目的招牌。
反向代理和負(fù)載均衡
在此之前,我們先對Nginx做一個簡單的了解
Nginx概述:
Nginx (engine x) 是一個高性能的HTTP和反向代理web服務(wù)器,同時也提供了IMAP/POP3/SMTP服務(wù)。因它的穩(wěn)定性、豐富的功能集、簡單的配置文件和低系統(tǒng)資源的消耗而聞名。
Nginx是一款輕量級的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,在BSD-like 協(xié)議下發(fā)行。其特點是占有內(nèi)存少,并發(fā)能力強(qiáng),事實上nginx的并發(fā)能力在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好。在連接高并發(fā)的情況下,Nginx能夠支持高達(dá) 50,000 個并發(fā)連接數(shù)的響應(yīng)。
Nginx的應(yīng)用場景:
http 服務(wù)器。Nginx 是一個 http 服務(wù)可以獨(dú)立提供 http 服務(wù)。可以做網(wǎng)頁靜態(tài)服務(wù)器。
虛擬主機(jī)??梢詫崿F(xiàn)在一臺服務(wù)器虛擬出多個網(wǎng)站。例如個人網(wǎng)站使用的虛擬主機(jī)。
反向代理,負(fù)載均衡。當(dāng)網(wǎng)站的訪問量達(dá)到一定程度后,單臺服務(wù)器不能滿足用戶的請求時,需要用多臺服務(wù)器集群可以使用 nginx 做反向代理。并且多臺服務(wù)器可以平均分擔(dān)負(fù)載,不會因為某臺服務(wù)器負(fù)載高宕機(jī)而某臺服務(wù)器閑置的情況。
代理:
對Nginx做了簡單了解后,我們?nèi)チ私庖幌滤淖詈诵牡膬蓚€功能:
想要了解反向代理,我們需要去了解一下什么是代理
代理概述:
代理服務(wù)器(Proxy Server)是一種重要的服務(wù)器安全功能,它的工作主要在開放系統(tǒng)互聯(lián)(OSI)模型的會話層,從而起到防火墻的作用。代理服務(wù)器大多被用來連接INTERNET(國際互聯(lián)網(wǎng))和INTRANET(局域網(wǎng))。
正向代理:
正向代理是一個位于客戶端和原始服務(wù)器(origin server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶端向代理發(fā)送一個請求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端。客戶端才能使用正向代理。
正向代理的典型用途是為在防火墻內(nèi)的局域網(wǎng)客戶端提供訪問Internet的途徑。正向代理還可以使用緩沖特性(由mod_cache提供)減少網(wǎng)絡(luò)使用率。
關(guān)于正向代理我們不做過多闡述。
反向代理:
反向代理(Reverse Proxy)方式是指以代理服務(wù)器來接受internet上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請求連接的客戶端,此時代理服務(wù)器對外就表現(xiàn)為一個反向代理服務(wù)器。
反向代理服務(wù)器位于用戶與目標(biāo)服務(wù)器之間,但是對于用戶而言,反向代理服務(wù)器就相當(dāng)于目標(biāo)服務(wù)器,即用戶直接訪問反向代理服務(wù)器就可以獲得目標(biāo)服務(wù)器的資源。同時,用戶不需要知道目標(biāo)服務(wù)器的地址,也無須在用戶端作任何設(shè)定。反向代理服務(wù)器通??捎脕碜鳛閃eb加速,即使用反向代理作為Web服務(wù)器的前置機(jī)來降低網(wǎng)絡(luò)和服務(wù)器的負(fù)載,提高訪問效率。
反向代理相關(guān)配置:
我們?nèi)ヅ渲靡幌耹inux中Nginx的配置文件:
去你的Nginx的安裝目錄下找到nginx.conf文件,一般是在/usr/local/nginx/conf/nginx.con中,如果是第一次打開可以把#的注釋都刪除了,為了方便查看。
server {
listen 81; # 監(jiān)聽的端口
server_name localhost; # 域名或ip
location / { # 訪問路徑配置
root index;# 根目錄
index index.html index.htm; # 默認(rèn)首頁
}
error_page 500 502 503 504 /50x.html; # 錯誤頁面
location = /50x.html {
root html;
}
}
第一步:我們?nèi)ヅ渲梅聪虼?br> 先在Nginx主機(jī)修改nginx.conf配置文件,在server上加上一個
upstream 自定義名稱{
server 192.168.177.129:8080; 網(wǎng)站的訪問路徑
}
如下:
upstream tomcat-travel{
server 192.168.177.129:8080;
}
server {
listen 80; # 監(jiān)聽的端口
server_name www.hmtravel.com; # 域名或ip
location / { # 訪問路徑配置
# root index;# 根目錄
proxy_pass http://tomcat-travel;
index index.html index.htm; # 默認(rèn)首頁
}
}
第二步:重新啟動Nginx
我們進(jìn)入到Nginx的安裝目錄下的sbin目錄下
./nginx -s quit 關(guān)閉Nginx
./nginx -s stop 關(guān)閉Nginx
./nginx 啟動Nginx
ps aux|grep nginx 查看Nginx進(jìn)程
./nginx -s reload 重啟Nginx(會重新讀取配置文件)
反向代理執(zhí)行流程
當(dāng)我們沒有配置反向代理時:
瀏覽器通過tomcat主機(jī)的ip地址直接請求網(wǎng)站
當(dāng)我們設(shè)置反向代理后:
瀏覽器請求服務(wù)器,請求的是代理服務(wù)器Nginx,通過Nginx設(shè)置的域名,也就是我們在nginx.conf中設(shè)置的server_name。然后通過proxy_pass去查找代理的服務(wù)器的ip,就會查到server上面的upstream,通過upstream獲取里面設(shè)置的ip地址。然后我們通過ip去訪問tomcat中部署的項目。
負(fù)載均衡:
當(dāng)你理解了反向代理的執(zhí)行流程,負(fù)載均衡也就很簡單了
首先我們先去了解一下負(fù)載均衡的基本描述:
負(fù)載均衡概述:
負(fù)載均衡,英文名稱為Load Balance,其含義就是指將負(fù)載(工作任務(wù))進(jìn)行平衡、分?jǐn)偟蕉鄠€操作單元上進(jìn)行運(yùn)行,例如FTP服務(wù)器、Web服務(wù)器、企業(yè)核心應(yīng)用服務(wù)器和其它主要任務(wù)服務(wù)器等,從而協(xié)同完成工作任務(wù)。
負(fù)載均衡構(gòu)建在原有網(wǎng)絡(luò)結(jié)構(gòu)之上,它提供了一種透明且廉價有效的方法擴(kuò)展服務(wù)器和網(wǎng)絡(luò)設(shè)備的帶寬、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、增加吞吐量、提高網(wǎng)絡(luò)的可用性和靈活性。
簡單理解為:多個tomcat,分擔(dān)并發(fā)量,雖然我們可以在一臺linux上復(fù)制多個tomcat,但是,在企業(yè)中,都是一臺linux上一個tomcat。
舉個例子:假設(shè)一臺tomcat的并發(fā)量只有200,現(xiàn)在你的網(wǎng)頁系統(tǒng)同一時候處理的請求數(shù)量(事務(wù)數(shù))大于200,那么你的tomcat就會掛掉,這時就需要多臺tomcat來分擔(dān)這個并發(fā)量。
Nginx的負(fù)載均衡,反向代理是它的基礎(chǔ),只需要在upstream中寫入多個server即可。
upstream tomcat-travel {
server 192.168.177.129:8080;
server 192.168.177.129:8081;
server 192.168.177.129:8082;
}
server {
listen 80; # 監(jiān)聽的端口
server_name www.hmtravel.com; # 域名或ip
location / { # 訪問路徑配置
# root index;# 根目錄
proxy_pass http://tomcat-travel;
index index.html index.htm; # 默認(rèn)首頁
}
error_page 500 502 503 504 /50x.html; # 錯誤頁面
location = /50x.html {
root html;
}
}
此處代碼使用的是一臺linux上3個tomcat使用不同端口來實現(xiàn)的。正常為,一臺linux上只有一個tomcat。
負(fù)載均衡的執(zhí)行流程和上面寫的反向代理一樣,只是在通過server_name去查找服務(wù)時,從一個變?yōu)閺?個中隨機(jī)選取一個。3個被選的概率一致,均為33%。
當(dāng)然我們可以進(jìn)行一個權(quán)重的配置。只需要在upstream中路徑后面加一個weight屬性就行,如:文章來源:http://www.zghlxwxcb.cn/news/detail-481389.html
upstream tomcat-travel {
server 192.168.177.129:8080 weight 2;
server 192.168.177.129:8081;
server 192.168.177.129:8082;
}
現(xiàn)在8080端口的訪問量占從原來的3分之一,變成了2分之一。(原來3臺中隨機(jī)一臺,現(xiàn)在相當(dāng)于新增一臺8080端口的訪問路徑,就變成4臺,8080占兩份)。文章來源地址http://www.zghlxwxcb.cn/news/detail-481389.html
到了這里,關(guān)于Nginx的反向代理和負(fù)載均衡的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!