Java面試----2018年Nginx常見面試題
1、請解釋一下什麼是Nginx?
答:Nginx是一個web伺服器和反向代理伺服器,用於HTTP、HTTPS、SMTP、POP3和IMAP協議。2、請列舉Nginx的一些特性?
答:Nginx伺服器的特性包括:
1)反向代理/L7負載均衡器
2)嵌入式Perl直譯器
3)動態二進位制升級
4)可用於重新編寫URL,具有非常好的PCRE支援
3、nginx和apache的區別?
答:
1)輕量級,同樣起web 服務,比apache 佔用更少的記憶體及資源
2)抗併發,nginx 處理請求是非同步非阻塞的,而apache 則是阻塞型的,在高併發下nginx 能保持低資源低消耗高效能
3)高度模組化的設計,編寫模組相對簡單
4)最核心的區別在於apache是同步多程序模型,一個連線對應一個程序;nginx是非同步的,多個連線(萬級別)可以對應一個程序
4.nginx是如何實現高併發的
答:一個主程序,多個工作程序,每個工作程序可以處理多個請求,每進來一個request,會有一個worker程序去處理。但不是全程的處理,處理到可能發生阻塞的地方,比如向上遊(後端)伺服器轉發request,並等待請求返回。那麼,這個處理的worker繼續處理其他請求,而一旦上游伺服器返回了,就會觸發這個事件,worker才會來接手,這個request才會接著往下走。由於web server的工作性質決定了每個request的大部份生命都是在網路傳輸中,實際上花費在server機器上的時間片不多。這是幾個程序就解決高併發的祕密所在。即@skoo所說的webserver剛好屬於網路io密集型應用,不算是計算密集型。5、請解釋Nginx如何處理HTTP請求。
6、在Nginx中,如何使用未定義的伺服器名稱來阻止處理請求?
答:只需將請求刪除的伺服器就可以定義為:
Server {
listen 80; server_name “ “ ;
return 444;
}
這裡,伺服器名被保留為一個空字串,它將在沒有“主機”頭欄位的情況下匹配請求,而一個特殊的Nginx的非標準程式碼444被返回,從而終止連線。
7、 使用“反向代理伺服器”的優點是什麼?
答:反向代理伺服器可以隱藏源伺服器的存在和特徵。它充當網際網路雲和web伺服器之間的中間層。這對於安全方面來說是很好的,特別是當您使用web託管服務時。8、請列舉Nginx伺服器的最佳用途。
9、請解釋Nginx伺服器上的Master和Worker程序分別是什麼?
答:
Master程序:讀取及評估配置和維持
Worker程序:處理請求
10、請解釋你如何通過不同於80的埠開啟Nginx?
答:為了通過一個不同的埠開啟Nginx,你必須進入/etc/Nginx/sites-enabled/,如果這是預設檔案,那麼你必須開啟名為“default”的檔案。編輯檔案,並放置在你想要的埠:
Like server {
listen 81;
}
11、請解釋是否有可能將Nginx的錯誤替換為502錯誤、503?
答: 502 =錯誤閘道器 503 =伺服器超載 有可能,但是您可以確保fastcgi_intercept_errors被設定為ON,並使用錯誤頁面指令。
Location / { fastcgi_pass 127.0.01:9001; fastcgi_intercept_errors on; error_page 502 =503/error_page.html; #… }
12、在Nginx中,解釋如何在URL中保留雙斜線?
答:要在URL中保留雙斜線,就必須使用merge_slashes_off;
語法:merge_slashes [on/off]
預設值: merge_slashes on
環境: http,server
13、請解釋ngx_http_upstream_module的作用是什麼?
答:ngx_http_upstream_module用於定義可通過fastcgi傳遞、proxy傳遞、uwsgi傳遞、memcached傳遞和scgi傳遞指令來引用的伺服器組。14、請解釋什麼是C10K問題?
答:C10K問題是指無法同時處理大量客戶端(10,000)的網路套接字。15、請陳述stub_status和sub_filter指令的作用是什麼?
答:
1)Stub_status指令:該指令用於瞭解Nginx當前狀態的當前狀態,如當前的活動連線,接受和處理當前讀/寫/等待連線的總數 2)Sub_filter指令:它用於搜尋和替換響應中的內容,並快速修復陳舊的資料
16、解釋Nginx是否支援將請求壓縮到上游?
答:您可以使用Nginx模組gunzip將請求壓縮到上游。gunzip模組是一個過濾器,它可以對不支援“gzip”編碼方法的客戶機或伺服器使用“內容編碼:gzip”來解壓縮響應。17、解釋如何在Nginx中獲得當前的時間?
答:要獲得Nginx的當前時間,必須使用SSI模組、$date_gmt和$date_local的變數。Proxy_set_header THE-TIME $date_gmt;18、用Nginx伺服器解釋-s的目的是什麼?
答:用於執行Nginx -s引數的可執行檔案。19、解釋如何在Nginx伺服器上新增模組?
答:在編譯過程中,必須選擇Nginx模組,因為Nginx不支援模組的執行時間選擇。
注:另有需要JAVA、Android、IOS、Python、C++、HTML5等全套程式設計視訊教程的朋友,請關注微信公眾號trteach“圖靈技術社群”獲取資源~~~