Nginx 基本配置

2021-10-02 15:48:34 字數 4253 閱讀 8393

nginx執行時至少載入幾個核心模組和乙個事件類模組

按功能分類

除錯、定位問題的配置

正常執行必備配置

優化效能配置

事件類配置(有些事件類配置歸入優化類,雖為events{},但作用為優化效能)

除錯、定位問題配置

1.守護程序方式執行nginx

daemon    on/off      預設on

daemon(守護程序)是脫離終端且後台執行程序,避免程序執行中資訊在終端顯示,且程序也不會被終端顯示資訊干擾

2.master/worker方式工作

master_process   on/off      預設on

若off,則由master程序自身處理請求

3.日誌設定

error_log    path   level  ;  預設error_log  logs / error.log  error

日誌級別debug、info、notice、warn、error、crit、alert、emerg依次遞增

若日誌設定debug,需要在configure加入 --with-debug,且路徑資料夾磁碟空間足夠

4.處理幾個特殊調試點

debug_points      stop /abort

stop時nginx**執行到這些調試點會發出sigstop訊號用於除錯            

abort則會產生乙個core  dump檔案,gdb可檢視nginx當時資訊

5.指定客戶端輸出debug級別日誌   -----》           屬於事件類配置,需要在events{}中

debug_connection    ip / cdir                                           events 

6.限制coredump 核心轉儲檔案的大小

worker_rlimit_core       size;

核心轉儲:linux中,程序發生錯誤或收到訊號終止時,系統會將程序執行時的記憶體內容(核心映像)寫入乙個檔案

(core檔案中),作為除錯之用

7.指定coredump檔案生成目錄

working_directory    path;

worker的工作目錄用於設定coredump檔案存放目錄,worker程序有權向目錄中寫入檔案

正常執行的配置

1.定義環境變數

env    varivar=value

可以直接操作呼叫系統環境變數

2.嵌入其他配置檔案

include   path;   路徑絕對相對皆可

3.pid檔案路徑

pid     path/file;       預設pid   logs/nginx.pid

預設與configure執行時的引數 「--pid-path」指定路徑相同,也可以修改該檔案直接影響nginx執行

4.niginx   worker程序執行的使用者組

user    username / groupname    預設  user    nobody   nobody

5.指定nginx  worker程序可以開啟的最大控制代碼描述個數

worker_rlimit_nofile    limit

6.限制訊號佇列

worker_rlimit_sigpending    limit

設定每個使用者發往nginx訊號佇列大小。當某個使用者訊號佇列滿,該使用者再傳送的訊號會被丟棄

優化效能配置

1.nginx  worker   程序個數

worker_processes   number      預設   worker_processes  1

每個worker都是單執行緒的程序,會呼叫各個模組以實現多種多樣的功能。

如果這些模組確認不會出現阻塞式呼叫,則多少cpu核心配置多少worker

若有可能出現阻塞式呼叫,則可多配置worker

2.繫結nginx  worker  程序到指定cpu核心

worker_cpu_coffinity   cpumask

將worker繫結指定的cpu,防止多個worker使用同乙個cpu出現同步現象,每個worker使用乙個cpu可實現完全的併發

3.ssl硬體加速

ssl_engine   device

若伺服器上有ssl硬體加速裝置,可以配置已加快ssl協議的處理速度,open ssl可檢視是否有ssl裝置

4.系統呼叫gettimeofday的執行頻率

timer_resolution   time

一般不必使用,若希望日誌檔案每行列印時間更準確,可以使用

5.nginx  worker   程序優先順序設定

worker_priority    nice      預設   0

程序優先順序越大,占用分配cpu資源越多,值為-20-19,一般不建議大於-5(核心程序)

事件類配置

1.是否開啟accept鎖

accept_mutex    on/off    預設on

可以讓多個worker程序輪流的、序列化的與新客戶端建立tcp連線。當某個worker程序建立的連線數量

達worker_connection  配置的最大數的7/8,會減少該worker建立連線的機會,實現均衡

2.lock檔案路徑

lock_file    path/file   預設   lock_file  logs/nginx.lock

accept鎖開啟,若因程式編譯,作業系統**等不支援原子鎖,才會用檔案鎖實現accept鎖,該配置生效

3.accept鎖到真正建立連線之間的延遲時間

accept_mutex_delay     x  ms   預設  500ms

accept鎖使用後,同時間只有乙個worker程序能夠取到accept鎖,並不是阻塞鎖,拿不到則返回等acce4.pt_mutex_delay 

後再嘗試

4.批量建立連線

multi_accept    on/off    預設  off

當事件模型通知有新連線時,盡可能對本次排程中客戶端發起的所有tcp請求都建立連線

5.選擇事件模型

use   kqueue   /rstig/epoll/  |  /dev/poll  | select |  /pool/eventport

nginx選擇最合適模型中(手動),linux中epoll、poll、select 三種epoll效能最好

6.每個worker的最大連線數

worker_connections   number

nginx請求的完整過程

請求過來----->建立連線----->接受資料------->傳送資料

底層中使用者會請求核心,進入核心拿去資源。當讀寫事件未準備好時,只能等到,阻塞呼叫會進入核心等待,cpu則會給別的請求使用。對於單執行緒的worker而言,網路請求越多,請求等待佇列越長,而cpu卻空閒。

因此非阻塞呼叫更適合,事件沒有準備好,馬上返回eagain告訴程序還未準備好,過段時間再來。因此程序會去完成其他的工作,但會不時檢視原請求是否準備好,代價也大。

因此非同步更符合,可以同時監控多個事件,呼叫他們是阻塞的,但可設定超越時間,在該事件內有事件完成則返回。以epoll為例,事件未準備好,就放在epoll中,ok了就讀寫。worker執行緒即在各請求之間不斷切換,並不消耗資源,只是請求占用記憶體

(此處並非請求,指未處理好的請求)

http相關的配置

核心模組    ngx_http_core_module

nginx   -t     檢視nginx主配置檔案   ----->/etc/nginx/nginx.conf

若在主配置檔案下增添虛擬主機,應位於http{}模組內

server

基於port      listen   port ;  指定監聽埠

基於ip的虛擬主機      listen   ip:port;

基於hostname       server_name    ***xx;

可加入限制條目

default_server    設定為預設虛擬主機

ssl           限制僅通過ssl連線提供服務

backlog=number      超過併發連線數後,請求進後援佇列長度

rcvbuf=size    接受區緩衝大小

sndbuf=size    傳送區緩衝大小

Nginx基本配置

基本的 優化過的 配置 我們將修改的唯一檔案是nginx.conf,其中包含nginx不同模組的所有設定。你應該能夠在伺服器的 etc nginx目錄中找到nginx.conf。首先,我們將談論一些全域性設定,然後按檔案中的模組挨個來,談一下哪些設定能夠讓你在大量客戶端訪問時擁有良好的效能,為什麼它...

nginx基本配置

linux 配置 nginx 基本 1.首先安裝編輯器 因為nginx 是c 語言編寫的 yum y install make zlib zlib devel gcc c libtool openssl openssl devel 2 安裝pcre pcre 重要是讓linux 支援 rw 功能 解...

nginx 基本配置

user nobody worker processes 1 子程序,nginx啟動會有1個master程序和若干個子程序 error log logs error.log debug info notice warn error crit 日誌級別 這樣,當使用者請求 位址時,nginx 就會自動...