Nginx官方推薦的nginx.conf標準配置

banq發表於2022-02-23
Nginx官方釋出“避免10大NGINX配置錯誤”中,推薦nginx.conf配置為:

http {

    upstream node_backend {
        zone upstreams 64K;
        server 127.0.0.1:3000 max_fails=1 fail_timeout=2s;
        keepalive 2;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_set_header Host $host;
            proxy_pass http://node_backend/;
            proxy_next_upstream error timeout http_500;

        }
    }
}


即使沒有負載平衡或在一臺機器內,也要啟用upstream{}塊,它解鎖了幾個提高效能的功能:
  • zone指令建立了一個共享記憶體區域,主機上的所有 NGINX 工作程式都可以訪問有關上游伺服器的配置和狀態資訊。幾個上游組可以共享該區域。
  • server指令有幾個引數可用於調整伺服器行為。在這個例子中,我們改變了 NGINX 用來確定伺服器不健康並因此沒有資格接受請求的條件。在這裡,如果通訊嘗試在每 2 秒內失敗一次(而不是預設的每10 秒一次),它就會認為伺服器不健康。
  • 我們把這個設定和proxy_next_upstream指令結合起來,以配置NGINX認為的失敗的通訊嘗試,在這種情況下,它把請求傳遞給上游組的下一個伺服器。在預設的錯誤和超時條件中,我們新增了http_500,以便NGINX認為來自上游伺服器的HTTP 500(內部伺服器錯誤)程式碼代表一個失敗的嘗試。
  • keepalive指令設定每個工作程式的快取中儲存的與上游伺服器的空閒keepalive連線的數量。預設情況下,NGINX 會為每個新的傳入請求開啟一個到上游(後端)伺服器的新連線。這是安全但低效的,因為 NGINX 和伺服器必須交換三個資料包來建立連線,並交換三個或四個資料包來終止它。在高流量時,為每個請求開啟一個新連線會耗盡系統資源,並且根本無法開啟連線。修復是在 NGINX 和上游伺服器之間啟用keepalive 連線——而不是在請求完成時關閉,連線保持開啟狀態以用於其他請求。這既減少了源埠用完的可能性,又提高了效能。該引數設定為塊中列出的伺服器數量的兩倍。

相關文章