nginx配置詳解 一

2021-09-25 21:31:38 字數 4046 閱讀 8250

nginx的核心模組為main和events,此外還包括標準http模組、可選http模組和郵件模組,其還可以支援諸多第三方模組。main用於配置錯誤日誌、程序及許可權等相關的引數,events用於配置io模型,如epoll、kqueue、select或poll等,它們是必備模組。

nginx的主配置檔案由幾個段組成,這個段通常也被稱為nginx的上下文,每個段的定義格式如下所示。需要注意的是,其每乙個指令都必須使用分號(;)結束,否則為語法錯誤。

error_log 用於配置錯誤日誌,可用於main、http、server及location上下文中

語法格式:

error_log file | stderr [ debug | info | notice | warn | error | crit | alert | emerg ]

備註:要禁用錯誤日誌,不能使用「error_log off;」,而要使用類似如下選項:

error_log /dev/null crit;

timer_resolution 用於降低gettimeofday()系統呼叫的次數。預設情況下,每次從kevent()、epoll、/dev/poll、select()或poll()返回時都會執行此系統呼叫

語法格式:

timer_resolution interval

例如:timer_resolution 100ms;

worker_cpu_affinity 通過sched_setaffinity()將worker繫結至cpu上,只能用於main上下文

語法格式:

worker_cpu_affinity cpumask ...

例如:worker_processes 2;

worker_cpu_affinity 0001 0010 ;

worker_priority 為worker程序設定優先值,預設為0

語法格式:

worker_priority number

worker_processes worker程序是單執行緒程序。如果nginx用於cpu密集型的場景中,如ssl或gzip,且主機上的cpu個數至少有2個,那麼應該將此引數值設定為與cpu核心數相同;如果nginx用於大量靜態檔案訪問的場景中,且所有檔案的總大小大於可用記憶體時,應該將此引數的值設定得足夠大以充分利用磁碟頻寬。

此引數與events上下文中的work_connections變數一起決定了maxclient的值:

maxclients = work_processes * work_connections

worker_rlimit_nofile 設定worker程序所能夠開啟的檔案描述符個數的最大值

語法格式:

worker_rlimit_nofile number

worker_connections 設定每個worker所處理的最大連線數,它與來自main上下文的worker_processes一起決定了maxclients的值

use 在有著多於乙個的事件模型io的應用場景中,可以使用此指令設定nginx所使用的io機制,預設為./configure指令碼選定的各機制中最適用當前os的版本

語法格式:

use [ kqueue | rtsig | epoll | /dev/poll | select | poll | eventport ]

配置例項

user nginx;

worder_processes 8;

error_log /var/log/nginx/error.log

pid /var/run/nginx.pid

events

主要可以分為如下幾個類別

客戶端類指令:如client_body_buffer_size、client_header_buffer_size、   

client_header_timeout和keepalive_timeout等;

檔案io類指令:如aio、directio、open_file_cache、open_file_cache_min_uses、

open_file_cache_valid和sendfile等;

hash類指令:用於定義nginx為某特定的變數分配多大的記憶體空間,如types_hash_bucket_size、

server_names_hash_bucket_size和variables_hash_bucket_size等;

用時)和tcp_nopush(用於sendfile啟用時)等;

server 

用於定義虛擬伺服器相關的屬性,常見的指令有backlog、rcvbuf、bind及sndbuf等。

location [modifier] uri 或 location @name

通常用於server上下文中,用於設定某uri的訪問屬性。location可以巢狀。

proxy_connect_timeout:nginx將乙個請求傳送至upstream server之前等待的最大時長;

proxy_cookie_domain:將upstream server通過set-cookie首部設定的domain屬性修改為指定的

值,其值可以為乙個字串、正規表示式的模式或乙個引用的變數;

proxy_cookie_path: 將upstream server通過set-cookie首部設定的path屬性修改為指定的值,其

值可以為乙個字串、正規表示式的模式或乙個引用的變數;

proxy_hide_header:設定傳送給客戶端的報文中需要隱藏的首部;

proxy_pass:指定將請求**至upstream server的url路徑;

proxy_set_header:將傳送至upsream server的報文的某首部進行重寫;

proxy_redirect:重寫location並重新整理從upstream server收到的報文的首部;

proxy_send_timeout:在連線斷開之前兩次傳送至upstream server的寫操作的最大間隔時長;

proxy_read_timeout:在連線斷開之前兩次從接收upstream server接收讀操作的最大間隔時長;

proxy_redirect off; 不重寫url

proxy_set_header host $host; 將頭部進行**

proxy_set_header x-real-ip $remote_addr;

proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;

client_max_body_size 10m;

client_body_buffer_size 128k;

proxy_connect_timeout 30;

proxy_send_timeout 15;

proxy_read_timeout 15;

常用指令

個upstream伺服器;

upstream模組的負載均衡演算法主要有三種,輪調(round-robin)、ip雜湊(ip_hash)和最少連線(least_conn)三種

keepalive:每個worker程序為傳送到upstream伺服器的連線所快取的個數;

least_conn:最少連線排程演算法;

weight:權重;

max_fails:最大失敗連線次數,失敗連線的超時時長由fail_timeout指定;

fail_timeout:等待請求的目標伺服器傳送響應的時長;

backup:用於fallback的目的,所有服務均故障時才啟動此伺服器;

down:手動標記其不再處理任何請求; 例項

upstream backend

Nginx配置詳解

nginx的主要配置檔案是nginx.conf,位於安裝目錄下的nginx conf資料夾裡,主要的配置引數如下 定義nginx執行的使用者和使用者組 user nobody nobody nginx程序數,建議設定為等於cpu總核心數。worker processes 8 全域性錯誤日誌定義型別,...

nginx配置詳解

定義nginx執行的使用者和使用者組 user www www nginx程序數,建議設定為等於cpu總核心數。worker processes 8 全域性錯誤日誌定義型別,debug info notice warn error crit error log var log nginx error...

NGINX配置詳解

nginx 配置檔案 user nginx 使用者worker processes 8 工作程序,根據硬體調整,大於等於cpu核數 error log logs nginx error.log crit 錯誤日誌 pid logs nginx.pid pid放置的位置 worker rlimit n...