マインドマップギャラリー Nignx
Nginx 是一個高效能的HTTP和反向代理web伺服器,同時也提供了IMAP/POP3/SMTP服務。
2024-01-19 10:26:42 に編集されましたNignx
使用
命令
-c
指定設定檔 預設路徑--conf-path
-p
指定nginx安裝目錄
-g
暫時指定一些全域設定項,以使新的設定項生效
nginx -g "pid /var/nginx/test.pid"
約束條件:
配置項目不能與預設路徑下nginx.conf 衝突,否則無法啟動
以-g方式啟動的nginx服務執行其他指令時,需要把 -g帶上,否則可能出現設定項不符的情況
-t
測試設定檔是否有錯誤
-s
發送訊號:stop, quit, reopen, reload
配置
調試經常和定位問題
daemon on | off;
是否守護程式方式運行
master_process on | off;
是否以master/woker方式運作
off; master進程自身處理請求
error_log /path/file level;
日誌設定
debug_points [stop | abort]
stop: 到程式碼調試點發出SIGSTOP訊號以用於調試
abort: 產生一個coredump文件,可以使用gdb查看訊息
debug_connection [IP | CIDR]
這個配置項其實屬於事件類別配置 events { } 才有效
worker_rlimit_core size;
限制coredump核心轉儲檔案的大小
working_directory path;
指定coredump檔案產生目錄
注意: 如果日誌等級設定到debug, 必須configure 編譯時加入--with-debug配置項
正常運作的配置項
env VAR|VAR=VALUE
定義環境變數
include /path/file;
嵌入其他設定文件
pid path/file;
pid檔案的路徑
user username [groupname];
nginx worker進程運行的使用者及使用者群組
worker_rlimit_nofile limit;
一個worker進程可以打開的最大檔案句柄數
worker_rlimit_sigpending limit;
限制訊號隊列
優化效能的配置項
worker_processes number
nginx worker 進程個數;最優個數為CPU核心個數;
worker_cpu_affinity cpumask [cpumask...]
綁定nginx worker 進程到指定cpu核心;僅支援linux系統
ssl_engin device
SSL硬體加速;openssl engine -t
timer_resolution t
系統呼叫gettimeofday的執行頻率
worker_priority nice
nginx worker 進程優先權設定
事件類別配置項 events
accept_mutex [on| off]
是否開啟accept鎖;負載平衡鎖
lock_file path/file;
lock檔案的路徑
accept_mutex_delay Nms;
使用accept鎖後到真實建立連線之間的延遲時間
multi_accept [off | no]
批量建立新連接
use [kqueue | rtsig | epoll | /dev/poll | select | poll | eventport]
選擇事件模型
worker_connection number;
每個worker的最大連線數
http {}
server {}
location [ = | ~ | ~* | ^~|@] /uri/ {}
root path
以root方式設定資源路徑
alias path
以alias方式設定資源路徑
index file ...
訪問首頁
error_page code [ code...] [ = | =answer-code] uri | @named_location
根據HTTP返回碼重定向頁面
recursive_error_page [ off | on]
是否允許遞歸使用error_page
try_files path1 [path2] uri
依照順序嘗試取得有效 path,如全部無效回傳uri
listen address:port [ default | default_server | backlog=num | rcvbuf=size | sndbuf=size | accept_filter=filter| deferred | bind | ipv6only=[on|off] | ssl]
server_name name [...]
主機名稱
server_names_hash_bucket_size size
nginx 使用散列表來儲存server name;設定每個雜湊桶佔用記憶體大小
server_names_hash_max_size size
散列表的衝突率
server_name_in_redirect on | off;
重定向主機名稱處理
nginx.conf
記憶體及磁碟資源
client_body_in_file_only off | clean | on
用於調試,定位問題
client_body_in_single_buffer off | on
請求中HTTP包體一律儲存到記憶體buffer,超出client_body_buffer_size 寫入磁碟檔案中
client_header_buffer_size size
nginx接受請求中HTTP header部分時分配記憶體buffer大小
large_client_header_buffers number size
儲存超大HTTP head的 buffer個數和每個buffer大小
client_body_buffer_size size
儲存HTTP包體的記憶體buffer大小
client_body_temp_path dir_path [ level1 [ level2 [ level3 ]]]
HTTP包體的暫存目錄
connection_pool_size size
連接記憶體池大小
request_pool_size size
每個請求分配記憶體池大小
網路連線配置
client_header_timeout time
讀取HTTP header 的逾時時間
client_body_timeout time
讀取HTTP body 的逾時時間
send_timeout time
發送回應超時時間
reset_timeout_connect off | on
連線逾時後是否重置連接
lingering_close on | off | always
控制nginx關閉用戶連線方式
lingering_time time
lingering_close 啟用後,對於上傳大檔案很有用
lingering_timeout time
lingering_close 生效後,在關閉連線前,檢查數據
keepalive_disable [ mise6 | safari | none] ...
對某些瀏覽器停用keepalive功能
keepalive_timeout time
keepalive 逾時時間
keepalive_requests n
一個keepalive連線上允許承載的請求最大數
tcp_nodelay on | off
決定對keepalive連線是否使用TCP_NODELAY
tcp_nopush off | on
打開 tcp_nopush, 在發送回應時把整個回應包頭放到一個TCP包中發送
MIME類型設定
types {...}
MIME type 與檔案擴充的映射
default_type MIME-type
預設使用HTTP header Content-Type
types_hash_bucket_size size
每個散利痛佔用記憶體大小
types_hash_max_size size
散列表衝突率
對客戶端請求的限制
limit_except method ... { ... }
按HTTP方法限制請求
分支主題
分支主題