Nginx是現在最火的伺服器web和反向代理伺服器,反向代理是指以代理伺服器來接受internet上的連接配接請求,然後将請求轉發給内部網絡上的伺服器,并将從伺服器上得到的結果傳回給internet上請求連接配接的用戶端,此時代理伺服器對外就表現為一個反向代理伺服器。另外在高并發方面,有比較優異的表現。
Nginx是一款輕量級的Web伺服器、反向代理伺服器,基于 REST 架構風格,以統一資源描述符URI 或者統一資源定位符URL 作為溝通依據,通過 HTTP 協定提供各種網絡服務。由于它的記憶體占用少,啟動極快,高并發能力強,在網際網路項目中廣泛應用。
1整體介紹
Nginx是一款自由的、開源的、高性能的HTTP伺服器和反向代理伺服器;同時也是一個IMAP、POP3、SMTP代理伺服器;Nginx可以作為一個HTTP伺服器進行網站的釋出處理,另外Nginx可以作為反向代理進行負載均衡的實作。
1.1反向代理
反向代理了解架構如下:
反向代理(Reverse Proxy)方式是指以代理伺服器來接受 internet 上的連接配接請求,然後将請求轉發給内部網絡上的伺服器,并将從伺服器上得到的結果傳回給 internet 上請求連接配接的用戶端,此時代理伺服器對外就表現為一個反向代理伺服器。
如圖,儲存配置檔案後啟動 Nginx,這樣當我們通路 XX.XX.X.XXX 的時候,就相當于通路 XX.XX.X.XXX:80 了。
1.2負載均衡
負載均衡了解圖:
負載均衡,其原理就是将資料流量分攤到多個伺服器執行,減輕每台伺服器的壓力,多台伺服器(叢集)共同完成工作任務,進而提高了資料的吞吐量,多在高并發情況下使用。可使用的負載均衡政策有:輪詢(預設)、權重、ip_hash、url_hash(第三方)、fair(第三方)。
如圖,儲存配置檔案後啟動 Nginx,這樣當我們通路 XX.XX.X.XXX/umc 的時候,就相當于通路 XX.XX.X.XXX:1010 或者XX.XX.X.XXX:1010了,因為 Nginx 會自動判斷伺服器的狀态,如果伺服器處于不能通路(伺服器當機)的狀态,就不會跳轉到這台伺服器,是以也避免了一台伺服器當機影響使用的情況。
1.3動靜分離
Nginx 本身也是一個靜态資源的伺服器,當隻有靜态資源的時候,就可以使用 Nginx 來做伺服器,同時現在很流行的動靜态分離,就可以通過 Nginx 來實作,首先看看 Nginx 做靜态資源伺服器。
如圖,這樣如果通路 http:// IP 就會預設通路到上邊的指定路徑當中index.html,如果一個網站隻是靜态頁面的話,那麼就可以通過這種方式來實作部署。
動靜分離,常用于前後端分離,Nginx提供的動靜分離是指把動态請求和靜态請求分離開,合适的伺服器處理相應的請求,使整個伺服器系統的性能、效率更高。Nginx可以根據配置對不同的請求做不同轉發,這是動态分離的基礎。靜态請求對應的靜态資源可以直接放在Nginx上做緩沖,更好的做法是放在相應的緩沖伺服器上。動态請求由相應的後端伺服器處理。
2安裝配置
本次以Nginx1.14.2版本為例在linux伺服器環境上進行安裝部署,具體操作如下:
2.1環境準備
安裝make:
安裝g++:
安裝pcre和pcre-devel:
安裝zlib zlib提供了很多壓縮和解方式,nginx需要zlib對http進行gzip:
安裝openssl openssl是一個安全套接字層密碼庫,nginx要支援https,需要使用openssl:
2.2安裝配置
下載下傳nginx:
進入檔案夾:
解壓:
打開檔案路徑:
編譯檔案:
安裝:
更改配置檔案:
方式二:也可以将nginx.conf檔案直接通過xftp上傳到該位置,注意将原有檔案進行備份:
讓配置立即生效:
2.3執行啟動
進入sbin目錄:
啟動nginx:
停止指令:
3高可用配置
Keepalived是一個高可用解決方案,主要是用來防止伺服器單點發生故障,可以通過和Nginx配合來實作Web服務的高可用。
3.1環境準備
通過以下指令安裝Keepalived:
設定為系統服務:
關閉SElinux、配置keepalived相關配置 :
進入後做如下修改:
修改完成後,配置立即生效:
修改keepalived配置,主從機不同的地方通過黃色高亮顯示:
備份:cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak:
3.2腳本配置
配置 chk_nginx.sh檔案:
添加如下内容:
腳本進行授權:
修改防火牆,添加對虛拟IP的監聽:
3.3啟停服務
開啟keepalived服務:
停止keepalived服務:
4心得體會
本次項目Nginx的配置促使自己在網絡層面有了一定的了解,尤其是Nginx的幾個核心功能,具體包含反向代理、負載均衡等,但是這隻是剛剛開始,需要學習的内容還有很多,現從後續規劃、做事方法、疊代更新方面總結如下。
4.1後續規劃
每一次搭建K8S叢集環境都曾配置過Nginx,但是都隻是在照貓畫虎,隻是把配置檔案拿過來進行使用,并不了解配置檔案中每段代碼的含義,隻會配置某個關鍵字段資訊,經過本次的知識點梳理學習到了很多,但是學無止境,對nginx的了解還是不足,例如設定權重、正向代理等等了解得不夠全面,後續更要在邏輯上對每行代碼深入研究。