Nginx是現(xiàn)在最火的服務(wù)器web和反向代理服務(wù)器,反向代理是指以代理服務(wù)器來接受internet上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請求連接的客戶端,此時代理服務(wù)器對外就表現(xiàn)為一個反向代理服務(wù)器。另外在高并發(fā)方面,也有比較優(yōu)異的表現(xiàn)。
Nginx是一款輕量級的Web服務(wù)器、反向代理服務(wù)器,基于 REST 架構(gòu)風(fēng)格,以統(tǒng)一資源描述符URI 或者統(tǒng)一資源定位符URL 作為溝通依據(jù),通過 HTTP 協(xié)議提供各種網(wǎng)絡(luò)服務(wù)。由于它的內(nèi)存占用少,啟動極快,高并發(fā)能力強(qiáng),在互聯(lián)網(wǎng)項目中廣泛應(yīng)用。
整體介紹
Nginx是一款自由的、開源的、高性能的HTTP服務(wù)器和反向代理服務(wù)器;同時也是一個IMAP、POP3、SMTP代理服務(wù)器;Nginx可以作為一個HTTP服務(wù)器進(jìn)行網(wǎng)站的發(fā)布處理,另外Nginx可以作為反向代理進(jìn)行負(fù)載均衡的實現(xiàn)。
1.反向代理
反向代理理解架構(gòu)如下:

反向代理(Reverse Proxy)方式是指以代理服務(wù)器來接受 internet 上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給 internet 上請求連接的客戶端,此時代理服務(wù)器對外就表現(xiàn)為一個反向代理服務(wù)器。

如圖,保存配置文件后啟動 Nginx,這樣當(dāng)我們訪問 XX.XX.X.XXX 的時候,就相當(dāng)于訪問 XX.XX.X.XXX:80 了。
2.負(fù)載均衡
負(fù)載均衡理解圖:

負(fù)載均衡,其原理就是將數(shù)據(jù)流量分?jǐn)偟蕉鄠€服務(wù)器執(zhí)行,減輕每臺服務(wù)器的壓力,多臺服務(wù)器(集群)共同完成工作任務(wù),從而提高了數(shù)據(jù)的吞吐量,多在高并發(fā)情況下使用??墒褂玫呢?fù)載均衡策略有:輪詢(默認(rèn))、權(quán)重、ip_hash、url_hash(第三方)、fair(第三方)。

如圖,保存配置文件后啟動 Nginx,這樣當(dāng)我們訪問 XX.XX.X.XXX/umc 的時候,就相當(dāng)于訪問 XX.XX.X.XXX:1010 或者XX.XX.X.XXX:1010了,因為 Nginx 會自動判斷服務(wù)器的狀態(tài),如果服務(wù)器處于不能訪問(服務(wù)器宕機(jī))的狀態(tài),就不會跳轉(zhuǎn)到這臺服務(wù)器,所以也避免了一臺服務(wù)器宕機(jī)影響使用的情況。
3.動靜分離
Nginx 本身也是一個靜態(tài)資源的服務(wù)器,當(dāng)只有靜態(tài)資源的時候,就可以使用 Nginx 來做服務(wù)器,同時現(xiàn)在很流行的動靜態(tài)分離,就可以通過 Nginx 來實現(xiàn),首先看看 Nginx 做靜態(tài)資源服務(wù)器。

如圖,這樣如果訪問 http:// IP 就會默認(rèn)訪問到上邊的指定路徑當(dāng)中index.html,如果一個網(wǎng)站只是靜態(tài)頁面的話,那么就可以通過這種方式來實現(xiàn)部署。
動靜分離,常用于前后端分離,Nginx提供的動靜分離是指把動態(tài)請求和靜態(tài)請求分離開,合適的服務(wù)器處理相應(yīng)的請求,使整個服務(wù)器系統(tǒng)的性能、效率更高。Nginx可以根據(jù)配置對不同的請求做不同轉(zhuǎn)發(fā),這是動態(tài)分離的基礎(chǔ)。靜態(tài)請求對應(yīng)的靜態(tài)資源可以直接放在Nginx上做緩沖,更好的做法是放在相應(yīng)的緩沖服務(wù)器上。動態(tài)請求由相應(yīng)的后端服務(wù)器處理。
安裝配置
本次以Nginx1.14.2版本為例在linux服務(wù)器環(huán)境上進(jìn)行安裝部署,具體操作如下:
1.環(huán)境準(zhǔn)備
安裝make:

安裝g++:

安裝pcre和pcre-devel:

安裝zlib zlib提供了很多壓縮和解方式,nginx需要zlib對http進(jìn)行g(shù)zip:

安裝openssl openssl是一個安全套接字層密碼庫,nginx要支持https,需要使用openssl:

2.安裝配置
下載nginx:

進(jìn)入文件夾:

解壓:

打開文件路徑:

編譯文件:

安裝:

更改配置文件:

方式二:也可以將nginx.conf文件直接通過xftp上傳到該位置,注意將原有文件進(jìn)行備份:

讓配置立即生效:

3.執(zhí)行啟動
進(jìn)入sbin目錄:

啟動nginx::

停止命令:

高可用配置
Keepalived是一個高可用解決方案,主要是用來防止服務(wù)器單點發(fā)生故障,可以通過和Nginx配合來實現(xiàn)Web服務(wù)的高可用。
1.環(huán)境準(zhǔn)備
通過以下命令安裝Keepalived:

設(shè)置為系統(tǒng)服務(wù):

關(guān)閉SElinux、配置keepalived相關(guān)配置 :

進(jìn)入后做如下修改:

修改完成后,配置立即生效:

修改keepalived配置,主從機(jī)不同的地方通過黃色高亮顯示:

備份:cp
/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak:



2.腳本配置
配置 chk_nginx.sh文件:

添加如下內(nèi)容:

腳本進(jìn)行授權(quán):

修改防火墻,添加對虛擬IP的監(jiān)聽:

3.啟停服務(wù)
開啟keepalived服務(wù):

停止keepalived服務(wù):

心得體會
本次項目Nginx的配置促使自己在網(wǎng)絡(luò)層面有了一定的了解,尤其是Nginx的幾個核心功能,具體包含反向代理、負(fù)載均衡等,但是這只是剛剛開始,需要學(xué)習(xí)的內(nèi)容還有很多,現(xiàn)從后續(xù)規(guī)劃、做事方法、迭代更新方面總結(jié)如下。
1.后續(xù)規(guī)劃
每一次搭建K8S集群環(huán)境都曾配置過Nginx,但是都只是在照貓畫虎,只是把配置文件拿過來進(jìn)行使用,并不理解配置文件中每段代碼的含義,只會配置某個關(guān)鍵字段信息,經(jīng)過本次的知識點梳理學(xué)習(xí)到了很多,但是學(xué)無止境,對nginx的了解還是不足,例如設(shè)置權(quán)重、正向代理等等了解得不夠全面,后續(xù)更要在邏輯上對每行代碼深入研究。
2.做事方法
通過平時工作過程中對技能點的隨手記錄,在撰寫這篇文章的過程中,再一次梳理了自己的邏輯。在后續(xù)的工作中,應(yīng)該文檔分門別類地整理出來,例如教程類的內(nèi)容歸為一類、錯誤信息及解決方案的內(nèi)容歸為一類、知識點歸為一類,以便自己對知識進(jìn)行更新迭代及快速查找。筆者認(rèn)為寫文檔不僅沒有浪費時間,而且通過文檔的撰為我提供了很多幫助,比如代碼的復(fù)用、類似錯誤信息的快速調(diào)試等,節(jié)省了很多時間。
3.迭代更新
近期在某些項目配置過程中遇到了內(nèi)網(wǎng)80端口及外網(wǎng)端口ESB服務(wù)轉(zhuǎn)換時默認(rèn)攜帶外網(wǎng)配置端口的問題,解決本次問題是撰寫該文檔的主要原因,具體解決方法是通過nginx配置兩個server,通過監(jiān)控不同的端口使其指向不同的server來解決本次問題,但是在工作過程中發(fā)現(xiàn)有時會出現(xiàn)邏輯不清晰的情況,特別是在網(wǎng)絡(luò)層面的理解嚴(yán)重缺失,后續(xù)還需要不斷地深入了解。
伴隨著自身專業(yè)知識的不斷積累,對知識的認(rèn)知也不斷提高。當(dāng)回過頭來看自己之前記錄的工作文檔,會發(fā)現(xiàn)有存在很多漏點,這時就需要再次完善工作文檔。在這個完善的過程中又把初學(xué)時的理解和現(xiàn)在的理解做了比較,可以認(rèn)識到當(dāng)時的自己有哪些不足,思維邏輯有了哪些改善。技術(shù)、認(rèn)知在不斷更新,工作文檔也在不斷更新,在這個不斷迭代更新的過程中,使自己的知識點不知不覺連成了線。
本文由網(wǎng)上采集發(fā)布,不代表我們立場,轉(zhuǎn)載聯(lián)系作者并注明出處:http://m.zltfw.cn/shbk/40692.html