nginx如何配置參數(shù)以及變量
配置詳解
1.daemon
:是否以守護進程的方式運行nginx
- daemon on | off ,默認值為on;
2.master_process
:是否以master/worker方式工作
- master_process on | off ,默認值為on;
- 在大多數(shù)情況下nginx還是以master進程管理多個worker進程的方式運行的,關閉了master_process之后nginx將以master進程來處理請求
3.error_log
:日志的設置; 格式: /path/file level, 默認值為error_log logs/error.log error;
- /path/file參數(shù)為一個具體的文件。
- level的值可為:debug,info,notice,warn,error,crit,alert,emerg。
- level的級別從左往右級別依次增大,當設定一個級別時,大于或等于改級別的日志都會被輸出到path/file文件中,小于該級別的日志則不會輸出。
4.env
:定義環(huán)境變量
- env VAR | VAR=VALUE
- 這項配置能夠讓用戶直接設置操作系統(tǒng)上的環(huán)境變量。
5.include
:嵌入其他配置文件
- include配置能夠將其他配置文件嵌入到當前的nginx.conf中,他的參數(shù)可以是絕對路徑,也可以是相對路徑(相對路徑主目錄為nginx.conf所在目錄)。
6.pid
:配置pid文件的路徑( path/file)
- pid文件保存著master進程id。該文件會直接影響nginx的服務運行。
7.user
:nginx worker進程運行的用戶及用戶組
- user username [groupname],默認值為nobody;
- user用于配置master進程啟動后,fork出的worker進程運行在哪個用戶和用戶組下。
8.worker_rlimit_nofile
:指定nginx進程可以打開的最大文件個數(shù)。
- worker_rlimit_nofile limit;
9.worker_process
:nginx的worker進程數(shù),默認值1;
- 在master/worker運行的方式下,定義worker進程的個數(shù)。
- worker進程的數(shù)量直接影響性能。
- worker進程的配置與我們的實際業(yè)務需求有關,每個worker進程都是單線程的進程,他們會調用各個模塊以實現(xiàn)多種多樣的功能。
- 如果能夠確定這些模塊不會出現(xiàn)阻塞的調用,那么有多少CPU內核就應該配置多少個進程;反之,如果可能出現(xiàn)阻塞式調用,那么需要配置稍多一些的worker進程。
- 多個worker進程能夠充分利用多核系統(tǒng)架構,但若worker進程的數(shù)量多于CPU內核數(shù),那么會增大進程間的切換帶來的消耗。
10.worker_cpu_affinity
:綁定nginx worker進程到指定的cpu內核。
worker_cpu_affinity cpumask; worker_process 4; #開啟4個進程 #2核cpu,開啟4個進程 worker_cpu_affinity 01 10 01 10; #4核cpu,開啟4個進程 worker_cpu_affinity 1000 0100 0010 0001;
- 為什么一定需要綁定CPU內核?
- 假設每個worker進程都是非常繁忙的,如果多個worker進程都在搶同一個CPU,那么這就會出現(xiàn)同步問題。
- 反之如果每個進程都是獨享一個CPU,就在內核調度策略上實現(xiàn)了完全的并發(fā)。
11.ssl_engine device
:硬件加速
- 如果服務器上有ssl硬件加速設備,那么就可以進行配置以加快ssl協(xié)議的處理速度,可以通過OpenSSLengine
- -t命令查看是否具備ssl硬件加速設備
12.worker_priority
: nginx進程的優(yōu)先級設置(指明worker進程的nice值)
- worker_priority nice;默認值為0;
13.accept_mutex
:是否打開accept鎖
- accept_mutex on | off,默認值為on;
- accept_mutex是nginx的負載均衡鎖,accept_mutex這把鎖可以讓多個worker進程輪流的,序列化的與新的客戶端建立tcp連接。
- 當某一個worker進程建立的連接數(shù)量達到worker_connections配置的最大連接數(shù)的7/8時,會大大地減小這個worker進程試圖建立新tcp連接的機會,以此實現(xiàn)所有worker進程之上處理的客戶端請求數(shù)量接近。
14.lock_file
:lock文件的路徑
- lock_file path/file,默認值:lock_file logs/nginx.lock;
- accept鎖需要這個文件,如果accept鎖關閉,lock_file配置完全不生效。
15.accept_mutex_delay
- 使用accept鎖后到真正建立連接之間的延遲時間,默認:accept_mutex_delay 500ms;
在使用accept鎖后,同一時間只有一個worker進程能夠取到accept鎖。
這個accept鎖不是阻塞鎖,如果取不到會立刻返回。
如果有一個worker進程試圖取accept鎖而沒有取到,它至少要等accept_mutex_delay定義的時間間隔后才能再次試圖取鎖。
16.multi_accept
: 批量建立新連接
- multi_accept[on]off],默認: multi_accept off,
- 當事件模型通知有新連接時,盡可能地對本次調度中客戶端發(fā)起的所有TCP請求都建立連接。
17.use
: 選擇事件模型
- use[ kqueue]rtsiglepoll/dev/pollselectpollleventport];默認:Nginx會自動使用最適合的事件模型。
- 對于Linux操作系統(tǒng)來說,可供選擇的事件驅動模型有poll、select、epoll三種。
- epoll當然是性能最高的一種,epoll可以處理大并發(fā)連接。
18.worker_connections
:每個worker的最大連接數(shù)
- worker_connections number;
- 定義每個worker進程可以同時處理的最大連接數(shù)。
19.全局變量
- $args 變量中存放了請求URL中的請求指令。比如
- http:/www.xxxx.com/index/index?argl=valuel&arg2=value2中的“argl=valuel&arg2=value2”
如下所示
$content_length
變量中存放了請求頭中的Content-length字段$content_type
變量中存放了請求頭中的Content-type字段$document_root
變量中存放了針對當前請求的根路徑$document_uri
變量中存放了請求中的當前URI,并且不包括請求指令,比如 http://www.xxxx.com/index/index?argl-value1&arg2-value2中的“/index/index$host
變量中存放了請求URL中的主機部分字段、比如http://www.xxxx.com/index中的"“www.xxxx.com”。如果請求中 的主機部分字段不可用或者為空,則存放Nginx配置中該server塊中server_name
指令的配置值$http_user_agent
變量中存放客戶端的代理信息$http_cookie
變量中存放客戶端的cookie信息$limit_rate
變量中存放Nginx服務器對網(wǎng)絡連接速率的限制,也就是Nginx 配置中 limit_rate指令的配置值$remote_addr
變量中存放了客戶端的地址$remote_port
變量中存放了客戶端與服務器建立連接的端口號$remote_user
變量中存放了客戶端的用戶名$request_body_file
變量中存放了發(fā)給后端服務器的本地文件資源的名稱$request_method
變量中存放了客戶端的請求方式,如""GET”、“POST等$request_filename
變量中存放了當前請求的資源文件的路徑名$request_uri
變量中存放了當前請求的URI,并且?guī)д埱笾噶?/li>$query_string
與變量Sargs含義相同$scheme
變量中存放了客戶端請求使用的協(xié)議,比如“http”、“https”和“ftp”等$server_protocol
變量中存放了客戶端請求協(xié)議的版本,比如“HTTP1.0”、"HTTP/1.1”等$server_addr
變量中存放了服務器的地址$server_name
變量中存放了客戶端請求到達的服務器的名稱$server _port
變量中存放了客戶端請求到達的服務器的端口號uri
與變量uri與變量uri與變量document_uri含義相同
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
利用Nginx反向代理功能解決WEB網(wǎng)站80端口被封的解決方法
大陸的網(wǎng)絡環(huán)境,都在天朝神獸的制度下讓我等小P民悲劇一片;動不動就拔網(wǎng)線、封機房;現(xiàn)在更厲害的一招,從網(wǎng)關封殺你的80端口,一旦被封,網(wǎng)站域名就無法訪問2012-08-08nginx FastCGI錯誤Primary script unknown解決辦法
這篇文章主要介紹了nginx錯誤Primary script unknown解決辦法,需要的朋友可以參考下2014-03-03Nginx中的root&alias文件路徑及索引目錄配置詳解
這篇文章主要介紹了Nginx中的root&alias文件路徑及索引目錄配置,順帶講解了root和alias命令的用法,需要的朋友可以參考下2016-01-01