天天學JAVA-nginx(1)

如果覺得我寫的還行,請關注我的博客並且點個贊喲。本文主要介紹Nginx相關基礎知識,通過學習本文,你將掌握Nginx相關基礎知識

1.nginx簡介?
2.nginx功能特性?
3.nginx功能特性基本HTTP服務
4.nginx功能特性高級HTTP服務
5.nginx功能特性郵件代理服務
6.HTTP代理和反向代理
7.負載均衡
8.WEB緩存
9.一道阿里面試題,你會做嗎?

1.ngnix簡介?

Nginx(“engine x”)是一款是由俄羅斯的程序設計師Igor Sysoev所開發高性能的 Web和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。在高連接併發的情況下,Nginx是Apache服務器不錯的替代品。

2.nginx功能特性

nginx服務器以其功能豐富著稱它既可作爲HTTP服務器,也可以作爲反向代理服務器,或者郵件服務器;能夠快速響應靜態頁面(HTML)的請求;支持FastCGI、SSL、Virtual Host 、URL Rewrite、HTTP Basic Auth 、 Gzip等大量使用功能,並支持更多的第三方功能模塊拓展。
我們將nginx提供的基本服務從大體上歸納爲基本http服務、高級http服務和郵件服務三大類。

2.1基本HTTP服務

在Nginx提供的基本HTTP服務中,主要包含以下功能特性:
1)處理靜態文件(如HTML靜態網頁及請求);處理索引文件以及支持自動索引
2)打開並自行管理文件描述緩存
3)提供反向代理服務,並且可以使用緩存加速反向代理、同時完成簡單負載均衡及容錯
4)提供遠程FastCGI服務的緩存機制,加速訪問,同事完成簡單的負載均衡及容錯
5)使用Nginx的模塊化特性提供過濾器功能。Nginx基本過濾器包裹gzip壓縮,ranges支持、chunked響應、XSLT、SSI以及圖像縮放等。其中,針對包含多個SSI的頁面,經由FastCGI或反向代理、SSI過濾器可以並行處理
6)支持HTTP下安全套接層安全協議SSL

2.2高級HTTP服務

1)支持基於名字IP的虛擬主機設置,
2)支持HTTP/1.0中的KEEP-Alive模式和管線模型連接
3)支持重新加載配置以及在線升級時,無需中斷正在處理的請求
4)自定義訪問日誌格式、帶緩存的日誌寫操作以及快速日誌輪轉。
5)提供3XX~5XX錯誤代碼重定向功能
6)支持重寫模塊拓展
7)支持HTTP DAV模塊,從而爲Http WebDAV提供PUT,DELETE,MKCOOL,COPY以及MOVE方法
8)支持FLV流和MP4流傳輸
9)支持網絡監控,包括基於客戶端IP地址和基本認證機制的訪問控制、速度限制、來自同一地址的同時連接數或請求連接數限制
10)支持嵌入Perl語言

2.3郵件代理服務

1)支持外部使用HTTP認證服務器重定向到用戶到IMAP/POP3後端,並支持IMAP認證方式(LOGIN,AUTHLOGIN/PLAN/CRAM-MD5)和POP3認證方式(USER/PASS,APOP,AUTHLOGIN/PLAIN/CRAM-MD5)
2)支持使用外部HTTP認證服務器認證用戶後重定向連接到內部SMTP後端,並支持SMTP認證方式(AUTHLOGIN/PLAIN/CRAM-MD5)
3)支持郵件代理服務下的安全套接層安全協議SSL
4)支持純文本通信協議的拓展協議STARTTLS

3.HTTP代理和反向代理

代理服務和反向代理服務是Nginx服務器作爲WEB服務器的主要功能之一,尤其是反向代理服務,是應用十分廣泛地功能。

3.1正向代理

正向代理,針對客戶機來說,代理服務器可見,客戶機發送請求,不能直接訪問服務器,把請求交給代理服務器,代理服務器轉發請求給目的服務器,獲取請求數據,把數據交給用戶。如下圖
在這裏插入圖片描述

正向代理特點:
1) 從宏觀上分析:代理服務器和客戶機處於統一機房。

2) 客戶機是知道代理服務器存在

3) 代理服務器必須經過配置然後才能使用。

3.2反向代理

反向代理應該是Nginx做的最多的一件事了,反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現爲一個反向代理服務器。簡單來說就是真實的服務器不能直接被外部網絡訪問,所以需要一臺代理服務器,而代理服務器能被外部網絡訪問的同時又跟真實服務器在同一個網絡環境,當然也可能是同一臺服務器,端口不同而已。

在這裏插入圖片描述

反向代理:針對客戶機來說,反向代理服務器針對客戶來說是不可見,客戶機發送請求,反向代理服務器轉發請求,返回結果。

反向代理特點:

1) 反向代理服務器和項目部署在同一個機房。

2) 反向代理服務器對客戶機是不可見的。

4.負載均衡

負載均衡也是Nginx常用的一個功能,負載均衡其意思就是分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。簡單而言就是當有2臺或以上服務器時,根據規則隨機的將請求分發到指定的服務器上處理,負載均衡配置一般都需要同時配置反向代理,通過反向代理跳轉到負載均衡。而Nginx目前支持自帶3種負載均衡策略(內置策略),還有2種常用的第三方策略(擴展策略)。

4.1 三種內置策略

輪循(PR)
默認策略,每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器down掉,能自動剔除。

加權輪循
指定輪詢機率,weight和訪問比率成正比,用於後端服務器性能不均的情況。

ip_hash
上面的2種方式都有一個問題,那就是下一個請求來的時候請求可能分發到另外一個服務器,當我們的程序不是無狀態的時候(採用了session保存數據),這時候就有一個很大的很問題了,比如把登錄信息保存到了session中,那麼跳轉到另外一臺服務器的時候就需要重新登錄了,所以很多時候我們需要一個客戶只訪問一個服務器,那麼就需要用iphash了,iphash的每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決session的問題。

4.2兩種擴展策略

fair
按後端服務器的響應時間來分配請求,響應時間短的優先分配。

url_hash:
按照訪問的url的hash結果分配請求,每個請求的url會指向後端固定的某個服務器,可以在nginx作爲靜態服務器的情況下提高緩存效率。同樣要注意nginx默認不支持這種調度算法,要使用的話需要安裝nginx的hash軟件包。

5.WEB緩存

Nginx服務器的Web緩存服務主要由Proxy_Cache相關指令集合FastCGI_Cache相關指令集構成。其中Proxy_Cache主要用於在Nginx服務器提供反向代理服務時,對後端源服務器的返回內容進行URL緩存;FastCGI_Cache主要用於對FastCGI的動態程序進行緩存

6.假定CSomething是一個類,執行下面這些語句之後,內存裏創建了____個CSomething對象.

CSomething a();
CSomething b(2);
CSomething c[3];
CSomething &ra = b;
CSomething d=b;
CSomething *pA = c;
CSomething *p = new CSomething(4);

A.10
B. 9
C.8
D.7
E.6
F.5

如果你想知道答案或者你知道答案,請留言或者關注下方公衆號,並且回覆1031,將會得到答案和解析喲。

如果你覺得我寫的還行,請關注我的博客並且點個贊喲,也請關注我的公衆號並加入下方QQ羣,每天都會定時推送乾貨以及共享一些優質的學習資料和視頻喲.
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章