淺談Nginx

Uzizi發表於2018-05-26

一、Nginx概念

Nginx是一個web伺服器和方向代理伺服器,用於HTTP、HTTPS、SMTP、POP3和IMAP協議。

二、Nginx特性

Nginx伺服器的特性包括:

  • 反向代理/L7負載均衡器

  • 嵌入式Perl直譯器

  • 動態二進位制升級

  • 可用於重新編寫URL,具有非常好的PCRE支援

三、Nginx如何處理HTTP請求

Nginx使用反應器模式。主事件迴圈等待作業系統發出準備事件的訊號,這樣資料就可以從套接字讀取,在該例項中讀取到緩衝區並進行處理。單個執行緒可以提供數萬個併發連線。

四、在Nginx中,如何使用未定義的伺服器名稱來阻止處理請求?

只需將請求刪除的伺服器就可以定義為:

Server {

listen 80;

server_name “ “ ;

return 444;

}
這裡,伺服器名被保留為一個空字串,它將在沒有“主機”頭欄位的情況下匹配請求,而一個特殊的Nginx的非標準程式碼444被返回,從而終止連線。

五、 使用“反向代理伺服器”的優點是什麼?

反向代理伺服器可以隱藏源伺服器的存在和特徵。它充當網際網路雲和web伺服器之間的中間層。這對於安全方面來說是很好的,特別是當您使用web託管服務時。

六、Nginx伺服器的最佳用途。

Nginx伺服器的最佳用法是在網路上部署動態HTTP內容,使用SCGI、WSGI應用程式伺服器、用於指令碼的FastCGI處理程式。它還可以作為負載均衡器。

七、Nginx伺服器上的Master和Worker程式分別是什麼?

Master程式:讀取及評估配置和維持

Worker程式:處理請求

八、通過不同於80的埠開啟Nginx。

為了通過一個不同的埠開啟Nginx,你必須進入/etc/Nginx/sites-enabled/,如果這是預設檔案,那麼你必須開啟名為“default”的檔案。編輯檔案,並放置在你想要的埠:
Like server { listen 81; }

九、將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;
#…
}

十、Nginx中,解釋如何在URL中保留雙斜線?

要在URL中保留雙斜線,就必須使用merge_slashes_off;

語法:merge_slashes [on/off]

預設值: merge_slashes on

環境: http,server

十一、ngx_http_upstream_module的作用。

ngx_http_upstream_module用於定義可通過fastcgi傳遞、proxy傳遞、uwsgi傳遞、memcached傳遞和scgi傳遞指令來引用的伺服器組。

十二、C10K

C10K問題是指無法同時處理大量客戶端(10,000)的網路套接字。

十三、stub_status和sub_filter指令的作用

Stub_status指令:該指令用於瞭解Nginx當前狀態的當前狀態,如當前的活動連線,接受和處理當前讀/寫/等待連線的總數

Sub_filter指令:它用於搜尋和替換響應中的內容,並快速修復陳舊的資料

十四、Nginx是否支援將請求壓縮到上游?

您可以使用Nginx模組gunzip將請求壓縮到上游。gunzip模組是一個過濾器,它可以對不支援“gzip”編碼方法的客戶機或伺服器使用“內容編碼:gzip”來解壓縮響應。

十五、在Nginx中獲得當前的時間

要獲得Nginx的當前時間,必須使用SSI模組、dategmt

date_gmt和
date_local的變數。

Proxy_set_header THE-TIME $date_gmt;

十六、-s的目的

用於執行Nginx -s引數的可執行檔案。

十七、在Nginx伺服器上新增模組

在編譯過程中,必須選擇Nginx模組,因為Nginx不支援模組的執行時間選擇。