日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx面试题总结大全

發布時間:2023/12/10 Nginx 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx面试题总结大全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Nginx 的整體架構


1、什么是Nginx?
  • Nginx 是一個高性能HTTP和反向代理服務器,也是一個 IMAP/POP3/SMTP 代理服務器。
  • Nginx 其特點是占有內存少,并發能力強,能夠支持50000個并發連接響應(多路復用:epoll and kqueue).它處理請求時異步非阻塞,在高并發下保持低資源低消耗高性能。
2、請列舉Nginx的一些特性
  • 響應請求快,配置簡單
  • 高擴展性,跨平臺:它完全是由多個不同功能、不同層次、不同類型且耦合度極低的模塊組成。因此,當對某一個模塊修復Bug或進行升級時,可以專注于模塊自身。
  • 高可靠性:用于反向代理,宕機的概率微乎其微
  • 單機支持10萬以上的并發連接
  • 熱部署:master管理進程與worker工作進程的分離設計,使得Nginx能夠提供熱部署功能,即可以在7×24小時不間斷服務的前提下,升級Nginx的可執行文件。當然,它也支持不停止服務就更新配置項、更換日志文件等功能。
  • 最自由的BSD許可協議:BSD許可協議不只是允許用戶免費使用Nginx,它還允許用戶在自己的項目中直接使用或修改Nginx源碼,然后發布。
  • 內存消耗小,成本低廉、節省帶寬、穩定性高等特點。
3、請列舉Nginx和Apache 之間的不同點
  • 輕量級:同樣運行web服務,比apache占用更少的內存及資源;
  • 高并發:nginx處理請求時異步非阻塞的,而apache是阻塞型的;
  • 高度模塊化的設計,編寫模塊相對簡單;
  • 核心區別:apache是同步多進程模型,一個連接對應一個進程;nginx是異步的,多個連接可以對應一個進程;
4、Nginx如何處理HTTP請求?
  • Nginx使用反應器模式。主事件循環等待操作系統發出準備事件的信號,這樣數據就可以從套接字讀取,在該實例中讀取到緩沖區并進行處理。
  • 首先,nginx在啟動時,會解析配置文件,得到需要監聽的端口與ip地址,在nginx的master進程里面初始化監控的socket,在進行listen,然后在fork多個子進程出來,子進程會競爭accept新的連接。
  • 此時客戶端就可以向nginx發起連接,三次握手建立連接,然后創建nginx對連接的封裝(ngx_connection_t結構體),接著根據事件調用相應的事件處理模塊,處理完后,nginx或客戶端主動關閉連接。
5、nginx是如何實現高并發的?
  • 多進程機制

    • 服務器每當收到一個客戶端請求時,就有服務器主進程生成一個子進程出來和客戶端建立連接并進行交互,直到連接斷開,該子進程就結束了。
    • 優勢:各個進程之間相互獨立,不需要加鎖,減少了使用鎖對性能造成的影響,降低了編程的復雜度,降低開發成本;采用獨立的進程,進程之間不互相影響,如果一個進程發出異常退出時沒其他進程正常工作,master進程則很快啟動新的worker進程,確保服務不會中斷,從而降低風險。
    • 缺點:生成一個子進程需要進行內存復制等操作,在資源和時間上會產生一定的開銷。當有大量請求時,會導致系統性能下降。
  • 事件驅動模型:異步非阻塞機制

    • 每個工作進程使用異步非阻塞方式,可以處理多個客戶端請求;
    • 當某個工作進程接受到客戶端請求后,調用IO進行處理,如果不能立即得到結果,就會處理其他請求(非阻塞);客戶端在此期間也無需等待響應,就可以去處理其他事情(異步);
    • 當IO返回時,就會通知此工作進程;該進程得到通知暫時掛起當前事務去響應客戶端請求。
    • 采用單線程來異步非阻塞處理請求(管理員可以配置Nginx主進程的工作進程的數量)(epoll),不會為每個請求分配cpu和內存資源,節省了大量資源,同時也減少了大量的CPU的上下文切換。
  • 內存池:為了避免出現內存碎片,減少向操作系統申請內存的次數,降低各個模塊的開發復雜度,Nginx設計了簡單的內存池。它的作用主要是把多次向系統申請內存的操作整合成一次,大大減少了CPU的消耗。

6、在Nginx中,如何使用未定義的服務器名稱來阻止處理請求?
```Server{listen 80;server_name "";return 444;} ```
  • 這里服務器名被保留為一個空字符串,它將在沒有“主機”頭字段的情況下匹配請求,而一個特殊的Nginx的非標準代碼444被返回,從而終止連接。
7、使用“反向代理服務器”的優點是什么?
  • 反向代理服務器可以隱藏源服務器的存在和特征。它充當互聯網云和web服務器之間的中間層。提高了安全性,特別是使用web托管服務時。
8、請列舉Nginx服務器的最佳用途
  • Nginx服務器的最佳用途是在網絡上部署動態HTTP內容,使用SCGI、WSGI應用程序服務器、用于腳本的FastCGI處理程序。它還可以作為負載均衡器。
9、Nginx服務器上的Master和Worker進程分別是什么?
  • Master進程:主要負責調度工作進程:加載配置、啟動工作進程及非停升級。master進程主要用來管理worker進程,具體包括如下4個主要功能:
    • 接收來自外界的信號。
    • 向各worker進程發送信號。
    • 監控woker進程的運行狀態。
    • 當woker進程退出后(異常情況下),會自動重新啟動新的woker進程。
  • Worker進程:負責處理網絡請求與響應。
    • 多個worker進程之間是對等且相互獨立的,他們同等競爭來自客戶端的請求。
    • 一個請求,只可能在一個worker進程中處理,一個worker進程,不可能處理其它進程的請求。
    • worker進程的個數是可以設置的,一般我們會設置與機器cpu核數一致。同時,nginx為了更好的利用多核特性,具有cpu綁定選項,我們可以將某一個進程綁定在某一個核上,這樣就不會因為進程的切換帶來cache的失效。
10、請解釋代理設計中的正向代理和反向代理?
  • 代理服務器一般指局域網內部的機器通過代理服務器發送請求到互聯網上的服務器,代理服務器一般作用在客戶端(翻墻)。通過正向代理的方式,在我們的客戶端運行一個軟件,將我們的HTTP請求轉發到其他不同的服務器端,實現請求的分發。
  • 反向代理服務器作用在服務器端,它在服務器端接收客戶端的請求,然后將請求分發給具體的服務器進行處理,然后再將服務器的相應結果反饋給客戶端。
11、請解釋是否有可能將Nginx的錯誤替換為502錯誤、503?
  • 502 =錯誤網關 503=服務器超載
  • 有可能,但是您可以確保fastcgi_intercept_errors被設置為ON,并使用錯誤頁面指令。
    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-046sOPU8-1595407464359)(en-resource://database/1265:1)]
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指令的作用是什么?
  • Stub_status指令:該指令用于了解Nginx當前狀態,如當前的活動連接,接受和處理當前讀/寫/等待連接的總數;
  • Sub_filter指令:它用于搜索和替換響應中的內容,并快速修復陳舊的數據;
16、解釋Nginx是否支持將請求壓縮到上游?
  • 您可以使用Nginx模塊gunzip將請求壓縮到上游。gunzip模塊是一個過濾器,它可以對不支持“gzip”編碼方法的客戶機或服務器使用“內容編碼:gzip”來解壓縮響應。
  • 上游服務器指的產生內容的服務器。如nginx+tomcat tomcat是上游服務器。在nginx中有配置upstream,就是配置上游服務器集群,如應用服務器tomcat
17、為什么要做動、靜分離?
  • 動態資源、靜態資源分離是讓動態網站里的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以后,我們就可以根據靜態資源的特點將其做緩存操作,這就是網站靜態化處理的核心思路。
  • 原因:動、靜分離將網站靜態資源(HTML,JavaScript,CSS,img等文件)與后臺應用分開部署,提高用戶訪問靜態代碼的速度,降低對后臺應用訪問。一般將靜態資源放到nginx中,動態資源轉發到tomcat服務器中。
18、負載均衡
  • 負載均衡即是代理服務器將接收的請求均衡的分發到各服務器中,負載均衡主要解決網絡擁塞問題,提高服務器響應速度,服務就近提供,達到更好的訪問質量,減少后臺服務器大并發壓力。
  • 負載均衡策略
    • 輪詢(默認):每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。;
    • 指定權重:指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的情況;
    • IP綁定ip_hash:每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題;
    • fair(第三方):按后端服務器的響應時間來分配請求,響應時間短的優先分配。;
    • url_hash(第三方):按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效
19、Keepalived
  • Nginx+keepalived實現負載均衡高可用
  • keepalived是集群管理中保證集群高可用的一個服務軟件,用來防止單點故障。
  • Keepalived的作用是檢測web服務器的狀態,如果有一臺web服務器死機,或工作出現故障,Keepalived將檢測到,并將有故障的web服務器從系統中剔除,當web服務器工作正常后Keepalived自動將web服務器加入到服務器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的web服務器。

[1]https://blog.csdn.net/kris958/article/details/102173878
[2]https://blog.csdn.net/Y0Q2T57s/article/details/88084000

總結

以上是生活随笔為你收集整理的Nginx面试题总结大全的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。