뚠뚠멍의 생각들

使用nginx作為網頁伺服器時的關鍵設定

  • 撰写语言: 韓国語
  • 基准国家: 所有国家country-flag
  • 信息技术

撰写: 2024-09-26

撰写: 2024-09-26 21:20

Nginx是一個開源軟體,常用於網頁伺服器或網頁代理伺服器。

透過適當的設定,可以有效率地提供靜態內容。

在此記錄一些主要的設定。


一些與效能相關的主要設定

1. gzip壓縮

載入網站時,會從網頁伺服器接收許多檔案,例如JavaScript、圖片、HTML和CSS等。

此時,如果使用gzip壓縮,而不是直接傳送原始內容,則可以顯著減少傳輸的數據量。


也就是說,應用此設定後:

- 減少數據量,節省頻寬。

- 節省伺服器資源。

- 使用者體驗方面,實際載入速度會加快。


另一方面,由於伺服器需要在回應內容之前執行gzip壓縮,因此CPU使用率可能會提高。

需要測試哪些類型的檔案需要壓縮、壓縮程度以及壓縮檔案的大小等,才能在生產環境中應用。


以下是一些與gzip相關的設定:

* gzip_vary指示伺服器可以根據客戶端是否支援gzip,分別傳送壓縮版和未壓縮版的內容。(通知客戶端,根據客戶端請求標頭(Accept-Encoding)可以提供不同版本的內容。)


2. proxy_buffer設定

Nginx會在將回應傳送給客戶端之前,將回應儲存在緩衝區中。

當網頁伺服器向客戶端傳送回應時,如果客戶端的網路速度很慢,伺服器則需要持續等待資料傳輸。(網路瓶頸)

這時,伺服器會持續使用資源,為了解決此問題,可以使用緩衝區暫時處理回應,與客戶端處理速度無關。這樣可以帶來以下優點:

- 優化伺服器負載

- 減少網路瓶頸

※如果緩衝區大小設定太大,可能會延遲文字串流等即時數據傳輸,因此需要測試。尤其近期AI相關服務盛行,如果文字串流失敗,務必檢查此設定。


3. worker和http設定

worker是處理客戶端請求的程序,可以設定每個伺服器CPU核心有多少個worker。

http通常是請求-連線-回應-連線關閉,為了減少多次請求的連線資源,可以保持客戶端連線,這就是keep alive設定。

將這兩者結合的原因如下:

如果伺服器有4個核心,理論上可以同時處理的連線數為1024 * 4 = 4096。

(根據資源或流量環境,可能不準確)

當4096個客戶端同時連線並佔用所有keepalive 65秒時,

第4097個使用者嘗試連線時,將無法連線,可能會導致回應延遲。


因此,假設透過自動擴展等方式確保伺服器資源穩定,如果事件發生時回應延遲,則上述設定可能會間接造成影響。


4. 其他 - location區塊

proxy buffer等一些設定可以針對請求的URL個別應用。

* keep-alive等一些設定是在HTTP/伺服器層級應用,無法針對區塊個別設定。

server {
listen 80;
server_name example.com;


透過上述設定,可以優化網頁效能。請考慮各種測試案例,充分測試後再優化伺服器效能!

* 可以不用停機就能應用修改後的nginx設定,因此大多數情況下都相當穩定。






评论0