nginx配置如何調試
A. nginx 配置詳解是怎麼樣的
Nginx配置文件主要分為四部分:main(全局配置)、server(主機設置)、upstream(上游伺服器設置)和location(URL匹配特定位置後的設置)每部分包含若干個指令。
Nginx功能豐富,可作為HTTP伺服器,也可作為反向代理伺服器,郵件伺服器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。
並且支持很多第三方的模塊擴展,Nginx的穩定性、功能集、示例配置文件和低系統資源的消耗讓他後來居上,在全球活躍的網站中有12.18%的使用比率,大約為2220萬個網站。
nginx 配置注意事項
Nginx可以對不同的文件做不同的緩存處理,配置靈活,並且支持FastCGI_Cache,主要用於對FastCGI的動態程序進行緩存。配合著第三方的ngx_cache_purge,對制定的URL緩存內容可以的進行增刪管理。
events塊:配置影響nginx伺服器或與用戶的網路連接。有每個進程的最大連接數,選取哪種事件驅動模型處理連接請求,是否允許同時接受多個網路連接,開啟多個網路連接序列化等。
B. 安全開發運維必備的Nginx代理Web伺服器性能優化與安全加固配置
為了更好的指導部署與測試藝術升系統nginx網站伺服器高性能同時下安全穩定運行,需要對nginx服務進行調優與加固;
本次進行Nginx服務調優加固主要從以下幾個部分:
本文檔僅供內部使用,禁止外傳,幫助研發人員,運維人員對系統長期穩定的運行提供技術文檔參考。
Nginx是一個高性能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP伺服器。Nginx作為負載均衡伺服器, Nginx 既可以在內部直接支持 Rails 和 PHP 程序對外進行服務,也可以支持作為 HTTP代理伺服器對外進行服務。
Nginx版本選擇:
項目結構:
Nginx文檔幫助: http://nginx.org/en/docs/
Nginx首頁地址目錄: /usr/share/nginx/html
Nginx配置文件:
localtion 請求匹配的url實是一個正則表達式:
Nginx 匹配判斷表達式:
例如,匹配末尾為如下後綴的靜態並判斷是否存在該文件, 如不存在則404。
查看可用模塊編譯參數:http://nginx.org/en/docs/configure.html
http_gzip模塊
開啟gzip壓縮輸出(常常是大於1kb的靜態文件),減少網路傳輸;
http_fastcgi_mole模塊
nginx可以用來請求路由到FastCGI伺服器運行應用程序由各種框架和PHP編程語言等。可以開啟FastCGI的緩存功能以及將靜態資源進行剝離,從而提高性能。
keepalive模塊
長連接對性能有很大的影響,通過減少CPU和網路開銷需要開啟或關閉連接;
http_ssl_mole模塊
Nginx開啟支持Https協議的SSL模塊
linux內核參數部分默認值不適合高並發,Linux內核調優,主要涉及到網路和文件系統、內存等的優化,
下面是我常用的內核調優配置:
文件描述符
文件描述符是操作系統資源,用於表示連接、打開的文件,以及其他信息。NGINX 每個連接可以使用兩個文件描述符。
例如如果NGINX充當代理時,通常一個文件描述符表示客戶端連接,另一個連接到代理伺服器,如果開啟了HTTP 保持連接,這個比例會更低(譯註:為什麼更低呢)。
對於有大量連接服務的系統,下面的設置可能需要調整一下:
精簡模塊:Nginx由於不斷添加新的功能,附帶的模塊也越來越多,建議一般常用的伺服器軟體使用源碼編譯安裝管理;
(1) 減小Nginx編譯後的文件大小
(2) 指定GCC編譯參數
修改GCC編譯參數提高編譯優化級別穩妥起見採用 -O2 這也是大多數軟體編譯推薦的優化級別。
GCC編譯參數優化 [可選項] 總共提供了5級編譯優化級別:
常用編譯參數:
緩存和壓縮與限制可以提高性能
NGINX的一些額外功能可用於提高Web應用的性能,調優的時候web應用不需要關掉但值得一提,因為它們的影響可能很重要。
簡單示例:
1) 永久重定向
例如,配置 http 向 https 跳轉 (永久)
nginx配置文件指令優化一覽表
描述:Nginx因為安全配置不合適導致的安全問題,Nginx的默認配置中存在一些安全問題,例如版本號信息泄露、未配置使用SSL協議等。
對Nginx進行安全配置可以有效的防範一些常見安全問題,按照基線標准做好安全配置能夠減少安全事件的發生,保證採用Nginx伺服器系統應用安全運行;
Nginx安全配置項:
溫馨提示: 在修改相應的源代碼文件後需重新編譯。
設置成功後驗證:
應配置非root低許可權用戶來運行nginx服務,設置如下建立Nginx用戶組和用戶,採用user指令指運行用戶
加固方法:
我們應該為提供的站點配置Secure Sockets Layer Protocol (SSL協議),配置其是為了數據傳輸的安全,SSL依靠證書來驗證伺服器的身份,並為瀏覽器和伺服器之間的通信加密。
不應使用不安全SSLv2、SSLv3協議即以下和存在脆弱性的加密套件(ciphers), 我們應該使用較新的TLS協議也應該優於舊的,並使用安全的加密套件。
HTTP Referrer Spam是垃圾信息發送者用來提高他們正在嘗試推廣的網站的互聯網搜索引擎排名一種技術,如果他們的垃圾信息鏈接顯示在訪問日誌中,並且這些日誌被搜索引擎掃描,則會對網站排名產生不利影響
加固方法:
當惡意攻擊者採用掃描器進行掃描時候利用use-agent判斷是否是常用的工具掃描以及特定的版本,是則返回錯誤或者重定向;
Nginx支持webdav,雖然默認情況下不會編譯。如果使用webdav,則應該在Nginx策略中禁用此規則。
加固方法: dav_methods 應設置為off
當訪問一個特製的URL時,如"../nginx.status",stub_status模塊提供一個簡短的Nginx伺服器狀態摘要,大多數情況下不應啟用此模塊。
加固方法:nginx.conf文件中stub_status不應設置為:on
如果在瀏覽器中出現Nginx自動生成的錯誤消息,默認情況下會包含Nginx的版本號,這些信息可以被攻擊者用來幫助他們發現伺服器的潛在漏洞
加固方法: 關閉"Server"響應頭中輸出的Nginx版本號將server_tokens應設置為:off
client_body_timeout設置請求體(request body)的讀超時時間。僅當在一次readstep中,沒有得到請求體,就會設為超時。超時後Nginx返回HTTP狀態碼408(Request timed out)。
加固方法:nginx.conf文件中client_body_timeout應設置為:10
client_header_timeout設置等待client發送一個請求頭的超時時間(例如:GET / HTTP/1.1)。僅當在一次read中沒有收到請求頭,才會設為超時。超時後Nginx返回HTTP狀態碼408(Request timed out)。
加固方法:nginx.conf文件中client_header_timeout應設置為:10
keepalive_timeout設置與client的keep-alive連接超時時間。伺服器將會在這個時間後關閉連接。
加固方法:nginx.conf文件中keepalive_timeout應設置為:55
send_timeout設置客戶端的響應超時時間。這個設置不會用於整個轉發器,而是在兩次客戶端讀取操作之間。如果在這段時間內,客戶端沒有讀取任何數據,Nginx就會關閉連接。
加固方法:nginx.conf文件中send_timeout應設置為:10
GET和POST是Internet上最常用的方法。Web伺服器方法在RFC 2616中定義禁用不需要實現的可用方法。
加固方法:
limit_zone 配置項限制來自客戶端的同時連接數。通過此模塊可以從一個地址限制分配會話的同時連接數量或特殊情況。
加固方法:nginx.conf文件中limit_zone應設置為:slimits $binary_remote_addr 5m
該配置項控制一個會話同時連接的最大數量,即限制來自單個IP地址的連接數量。
加固方法:nginx.conf 文件中 limit_conn 應設置為: slimits 5
加固方法:
加固方法:
解決辦法:
描述後端獲取Proxy後的真實Client的IP獲取需要安裝--with-http_realip_mole,然後後端程序採用java(request.getAttribute("X-Real-IP"))進行獲取;
描述: 如果要使用geoip地區選擇,我們需要再nginx編譯時加入 --with-http_geoip_mole 編譯參數。
描述: 為了防止外部站點引用我們的靜態資源,我們需要設置那些域名可以訪問我們的靜態資源。
描述: 下面收集了Web服務中常規的安全響應頭, 它可以保證不受到某些攻擊,建議在指定的 server{} 代碼塊進行配置。
描述: 為了防止某些未備案的域名或者惡意鏡像站域名綁定到我們伺服器上, 導致伺服器被警告關停,將會對業務或者SEO排名以及企業形象造成影響,我們可以通過如下方式進行防範。
執行結果:
描述: 有時你的網站可能只需要被某一IP或者IP段的地址請求訪問,那麼非白名單中的地址訪問將被阻止訪問, 我們可以如下配置;
常用nginx配置文件解釋:
(1) 阿里巴巴提供的Concat或者Google的PageSpeed模塊實現這個合並文件的功能。
(2) PHP-FPM的優化
如果您高負載網站使用PHP-FPM管理FastCGI對於PHP-FPM的優化非常重要
(3) 配置Resin on Linux或者Windows為我們可以打開 resin-3.1.9/bin/httpd.sh 在不影響其他代碼的地方加入:-Dhttps.protocols=TLSv1.2, 例如
原文地址: https://blog.weiyigeek.top/2019/9-2-122.html
C. 如何在windows上配置並運行Nginx
1、下載nginx穩定版
2、解壓nginx.zip,將解壓後的目錄移動到指定要求目錄,如c:\nginx
3、進到該目錄去,nginx.exe是nginx啟動程序,conf是nginx一些配置文件目錄,其中nginx.conf是nginx主配置文件
4、編輯主配置文件nginx.conf
#表示注釋
nginx配置文件里默認用相對路徑,是相對nginx的根目錄,如果採用上面那就是相對c:\nginx,也可以用絕對路徑
nginx.conf
worker_processes 4; #設置跟cpu核數一樣就行
events {
worker_connections 10240;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 15;
server_tokens off;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 4;
gzip_vary on;
gzip_types text/plain text/css text/xml application/x-javascript application/xml application/atom-xml text/javascript;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_body_buffer_size 128k;
server {
listen 80; #監聽埠
server_name demo.yunfancdn.com; #主機名
root C:/web/html; #網站根目錄,這里要按照unix寫法,不能這樣寫C:\Program Files
client_max_body_size 2M;
index index.html ;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 15d;
}
location ~ .*\.(js|css)?$
{
expires 20m;
}
}
}
5、啟動nginx
打開cmd,檢查配置文件有沒語法錯誤
輸入c:\nginx\nginx.exe -t
nginx: the configuration file C:\nginx-1.8.0/conf/nginx.conf syntax is ok
nginx: configuration file C:\nginx-1.8.0/conf/nginx.conf test is successful
看到上面的ok和successful就沒問題了。
然後雙擊nginx.exe就可以開啟
檢查nginx是否啟動
更多操作像重新載入nginx ,cmd輸入命令:nginx –s reload,想獲取更多幫助,請在cmd里,輸入nginx.exe -h 查看。
6、啟動843埠
下載843程序
下載到本地後直接執行Flash843_Windows.exe即可
註:後續會改善將該程序寫入到系統服務中
D. nginx基本配置(參考)
Nginx是一款自由的、開源的、高性能的HTTP伺服器和反向代理伺服器;同時也是一個IMAP、POP3、SMTP代理伺服器;Nginx可以作為一個HTTP伺服器進行網站的發布處理,另外Nginx可以作為反向代理進行負載均衡的實現。
1、全局塊:配置影響nginx全局的指令。一般有運行nginx伺服器的用戶組,nginx進程pid存放路徑,日誌存放路徑,配置文件引入,允許生成worker process數等。
2、events塊:配置影響nginx伺服器或與用戶的網路連接。有每個進程的最大連接數,選取哪種事件驅動模型處理連接請求,是否允許同時接受多個網路連接,開啟多個網路連接序列化等。
3、http塊:可以嵌套多個server,配置代理,緩存,日誌定義等絕大多數功能和第三方模塊的配置。如文件引入,mime-type定義,日誌自定義,是否使用sendfile傳輸文件,連接超時時間,單連接請求數等。
4、server塊:配置虛擬主機的相關參數,一個http中可以有多個server。
5、location塊:配置請求的路由,以及各種頁面的處理情況。
6、緩存控制欄位cache-control的配置說明 ( https://www.cnblogs.com/kevingrace/p/10459429.html )
HTTP協議的Cache -Control指定請求和響應遵循的緩存機制。在請求消息或響應消息中設置 Cache-Control並不會影響另一個消息處理過程中的緩存處理過程。
請求時的緩存指令包括: no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached等。
響應消息中的指令包括: public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age。
no-cache: 數據內容不能被緩存, 每次請求都重新訪問伺服器, 若有max-age, 則緩存期間不訪問伺服器.
no-store: 不僅不能緩存, 連暫存也不可以(即: 臨時文件夾中不能暫存該資源).
private(默認): 只能在瀏覽器中緩存, 只有在第一次請求的時候才訪問伺服器, 若有max-age, 則緩存期間不訪問伺服器.
public: 可以被任何緩存區緩存, 如: 瀏覽器、伺服器、代理伺服器等.
max-age: 相對過期時間, 即以秒為單位的緩存時間.
no-cache, private: 打開新窗口時候重新訪問伺服器, 若設置max-age, 則緩存期間不訪問伺服器.
設置以分鍾為單位的絕對過期時間, 優先順序比Cache-Control低, 同時設置Expires和Cache-Control則後者生效. 也就是說要注意一點: Cache-Control的優先順序高於Expires
expires起到控制頁面緩存的作用,合理配置expires可以減少很多伺服器的請求, expires的配置可以在http段中或者server段中或者location段中. 比如控制圖片等過期時間為30天
客戶端必須設置正向代理伺服器,當然前提是要知道正向代理伺服器的IP地址,還有代理程序的埠。
"它代理的是客戶端,代客戶端發出請求",是一個位於客戶端和原始伺服器(origin server)之間的伺服器,為了從原始伺服器取得內容,客戶端向代理發送一個請求並指定目標(原始伺服器),然後代理向原始伺服器轉交請求並將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。
正向代理的用途:
(1)訪問原來無法訪問的資源,如Google
(2) 可以做緩存,加速訪問資源
(3)對客戶端訪問授權,上網進行認證
(4)代理可以記錄用戶訪問記錄(上網行為管理),對外隱藏用戶信息
多個客戶端給伺服器發送的請求,Nginx伺服器接收到之後,按照一定的規則分發給了後端的業務處理伺服器進行處理了。此時~請求的來源也就是客戶端是明確的,但是請求具體由哪台伺服器處理的並不明確了,Nginx扮演的就是一個反向代理角色。
客戶端是無感知代理的存在的,反向代理對外都是透明的,訪問者並不知道自己訪問的是一個代理。因為客戶端不需要任何配置就可以訪問。
反向代理,"它代理的是服務端,代服務端接收請求",主要用於伺服器集群分布式部署的情況下,反向代理隱藏了伺服器的信息。
反向代理的作用:
(1)保證內網的安全,通常將反向代理作為公網訪問地址,Web伺服器是內網
(2)負載均衡,通過反向代理伺服器來優化網站的負載
E. [code.nginx] Nginx伺服器高級配置
這里提及的參數是和IPv4網路有關的Linux內核參數。我們可以將這些內核參數的值追加到Linux系統的/etc/sysctl.conf文件中,然後使用如下命令使修改生效:
這些常用的參數包括以下這些。
** 1. net.core.netdev_max_backlog參數 **
net.core.netdev_max_backlog,表示當每個網路介面接收數據包的速率比內核處理這些包的速率快時,允許發送到隊列的數據包的最大數目。一般默認值為128(可能不同的Linux系統該數值也不同)。Nginx伺服器中定義的NGX_LISTEN_BACKLOG默認為511.我們可以將它調整一下:
** 2.net.core.somaxconn參數 **
該參數用於調節系統同時發起的TCP連接數,一般默認值為128。在客戶端存在高並發請求的情況下,在默認值較小,可能導致鏈接超時或者重傳問題,我們可以根據實際需要結合並發請求數來調節此值。
** 3.net.ipv4.tcp_max_orphans參數 **
該參數用於設定系統中最多允許存在多少TCP套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,沒有與用戶文件句柄關聯的TCP套接字將立即被復位,同時給出警告信息。這個限制只是為了防止簡單的DoS(Denial of Service,拒絕服務)攻擊。一般在系統內存比較充足的情況下,可以增大這個參數的賦值:
** 4.net.ipv4.tcp_max_syn_backlog參數 **
該參數用於記錄尚未收到客戶端確認信息的連接請求的最大值。對於擁有128MB內存的系統而言,此參數的默認值是1024,對小內存的系統則是128。一般在系統內存比較充足的情況下,可以增加這個參數的賦值:
** 5.net.ipv4.tcp_timestamps參數 **
該參數用於設置時間戳,這可以避免序列號的卷繞。在一個1Gb/s的鏈路上,遇到以前用過的序列號的概率很大。當此值賦值為0時,禁用對於TCP時間戳的支持。在默認情況下,TCP協議會讓內核接受這種「異常」的數據包。針對Nginx伺服器來說,建議將其關閉:
** 6.net.ipv4.tcp_synack_retries參數 **
該參數用於設置內核放棄TCP連接之前向客戶端發送SYN+ACK包的數量。為了建立對端的連接服務,伺服器和客戶端需要進行三次握手,第二次握手期間,內核需要發送SYN並附帶一個回應前一個SYN的ACK,這個參數主要影響這個進程,一般賦值為1,即內核放棄連接之前發送一次SYN+ACK包,可以設置其為:
** 7.net.ipv4.tcp_syn_retries參數 **
該參數的作用和上一個參數類似,設置內核放棄建立連接之前發送SYN包的數量,它的賦值和上個參數一樣即可:
在Nginx配置文件中,有這樣兩個指令:worker_processes和worker_cpu_affinity,它們可以針對多核CPU進行配置優化。
** 1.worker_processes指令 **
worker_processes指令用來設置Nginx服務的進程數。官方文檔建議此指令一般設置為1即可,賦值太多會影響系統的IO效率,降低Nginx伺服器的性能。為了讓多核CPU能夠很好的並行處理任務,我們可以將worker_processes指令的賦值適當的增大一些,最好是賦值為機器CPU的倍數。當然,這個值並不是越大越好,Nginx進程太多可能增加主進程調度負擔,也可能影響系統的IO效率。針對雙核CPU,建議設置為2或
4。如果是四核CPU,設置為:
設置好worker_processes指令之後,就很有必要設置worker_cpu_affinity指令。
** 2. worker_cpu_affinity指令 **
worker_cpu_affinity指令用來為每個進程分配CPU的工作內核。這個指令用來為每個進程分配CPU的工作內核。這個指令的設置方法有些麻煩。
如下圖所示:
worker_cpu_affinity指令的值是由幾組二進制值表示的。其中,每一組代表一個進程,每組中的每一位表示該進程使用CPU的情況,1表示使用,0表示不使用。注意,二進制位排列順序和CPU的順序是相反的。建議將不同的進程平均分配到不同的CPU運行內核上。
如果設置的Nginx服務的進程數為4,CPU為4核,因此會有四組值,並且每組有四位,所以,此指令的設置為:
四組二進制數值分別對應4個進程,第一個進程對應0001,表示使用第一個CPU內核。第二個進程對應0010,表示使用第二個CPU內核,以此類推。
如果將worker_processes指令的值賦值為8,即賦值為CPU內核個數的兩倍,則worker_cpu_affinity指令的設置可以是:
如果一台機器的CPU是八核CPU,並且worker_processes指令的值賦值為8,那麼worker_cpu_affinity指令的設置可以是:
** 1.keepalive_timeout指令 **
該指令用於設置Nginx伺服器與客戶端保持連接的超時時間。
這個指令支持兩個選項,中間用空格隔開。第一個選項指定客戶端連接保持活動的超時時間,在這個時間之後,伺服器會關閉此連接。第二個選項可選,其指定了使用Keep-Alive消息頭保持活動的有效時間,如果不設置它,Nginx伺服器不會向客戶端發送Keep-Alive消息頭以保持與客戶端某些瀏覽器(如Mozilla、Konqueror等)的連接,超過設置的時間後,客戶端就可以關閉連接,而不需要伺服器關閉了。你可以根據自己的實際情況設置此值,建議從伺服器的訪問數量、處理速度以及網路狀態方面考慮。下面是此指令的設置示例:
該設置表示Nginx伺服器與客戶端連接保持活動的時間是60s,60s後伺服器與客戶端斷開連接。使用Keep-Alive消息頭保持與客戶端某些瀏覽器(如Mozilla、Konqueror等)的連接時間為50s,50s後瀏覽器主動與伺服器斷開連接。
** 2.send_timeout指令 **
該指令用於設置Nginx伺服器響應客戶端的超時時間,這個超時時間僅針對兩個客戶端和伺服器之間建立連接後,某次活動之間的時間。如果這個時間後客戶端沒有任何活動,Nginx伺服器將會關閉連接。此指令的設置需要考慮伺服器訪問數量和網路狀況等方面。下面是此指令的設置示例:
該設置表示Nginx伺服器與客戶端建立連接後,某次會話中伺服器等待客戶端響應超時10s,就會自動關閉連接。
** 3.client_header_buffer_size指令 **
該指令用於設置Nginx伺服器允許的客戶端請求頭部的緩沖區大小,默認為1KB。此指令的賦值可以根據系統分頁大小來設置。分頁大小可以用以下命令取得:
有過Nginx伺服器工作經驗的可能遇到Nginx伺服器返回400錯誤的情況。查找Nginx伺服器的400錯誤原因比較困難,因為此錯誤並不是每次都會出現,出現錯誤的時候,通常在瀏覽器和日誌里也看不到任何有關提示信息。根據實際的經驗來看,有很大一部分情況是客戶端的請求頭部過大造成的。請求頭部過大,通常是客戶單cookie中寫入了較大的值引起的。於是適當增大此指令的賦值,允許Nginx伺服器接收較大的請求頭部,可以改善伺服器對客戶端的支持能力。一般將此指令賦值為4KB大小,即:
** 4.multi_accept指令 **
該指令用於配置Nginx伺服器是否盡可能多的接收客戶端的網路連接請求,默認值為off。
本節涉及的指令與Nginx伺服器的事件驅動模型密切相關。
其中,number為設置的最大數量。結合worker_processes指令,我們可以計算出Nginx伺服器允許同時連接的客戶端最大數量Client = worker_processes * worker_connections / 2;
在使用Nginx伺服器的過程中,筆者曾經遇到過無法訪問Nginx伺服器的情況,查看日誌發現一直在報如下錯誤:
根據報錯信息,推測可能是Nginx伺服器的最大訪問連接數設置小了。此指令設置的就是Nginx伺服器能接受的最大訪問量,其中包括前端用戶連接也包括其他連接,這個值在理論上等於此指令的值與它允許開啟的工作進程最大數的乘積。此指令一般設置為65535:
此指令的賦值與linux操作系統中進程可以打開的文件句柄數量有關系。按照以上設置修改此項賦值以後,Nginx伺服器報以下錯誤:
究其原因,Linux系統中有一個系統指令open file resource limit,它設置了進程可以打開的文件句柄數量。worker_connections指令的賦值當然不能超過open file resource limit的賦值。可以使用以下命令查看在你的Linux系統中open file resource limit的賦值。
可以通過一下命令將open file resource limit指令的值設為2390251:
這樣,Nginx的worker_connections指令賦值為65535就沒問題了。
其中,limit為Linux平台事件信號隊列的長度上限值。
該指令主要影響事件驅動模型中rfsig模型可以保存的最大信號數。Nginx伺服器的每一個工作進程有自己的事件信號隊列用於暫存客戶端請求發生信號,如果超過長度上線,Nginx伺服器自動轉用poll模型處理未處理器的客戶端請求。為了保證Nginx伺服器對客戶端請求的高效處理,請大家根據實際的客戶端並發請求數量和伺服器運行環境的處理能力設定該值。設置示例為:
其中,number為要設置的數量,默認值均為32。
其中,number為要設置的數量,默認值均為512.
使用kequeue_changes方式,可以設置與內核之間傳遞事件的數量。
其中,number為要設置的數量,默認值均為512。
7.rtsig_signo指令
該指令用於設置rtsig模式使用的兩個信號中的第一個,第二個信號是在第一個信號的編號上加1,語法為:
默認的第一個信號設置為SIGRTMIN+10。
提示
在Linux中可以使用一下命令查看系統支持的SIGRTMIN有哪些。
8.rtsig_overflow_* 指令
該指令代表三個具體的指令,分別為rtsig_overflow_events指令、rtsig_overflow_test指令和rtsig_overflow_threshold指令。這些指令用來控制當rtsig模式中信號隊列溢出時Nginx伺服器的處理方式,語法結構為:
其中,number是要設定的值。
rtsig_overflow_events指令指定隊列溢出時使用poll庫處理的事件數,默認值為16。
rtsig_overflow_test指令設定poll庫處理完第幾件事件後將清空rtsig模型使用的信號隊列,默認值為32。
rtsig_overflow_threshold指令指定rtsig模式使用的信號隊列中的事件超過多少時就需要清空隊列了。