摘要:每個打開文件描述符的最大數量限制。多長時間檢查一次緩存的有效信息指令中的參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打開的。如果沒有匹配的,則默認使用配置文件中第一個。
頂級配置
#定義 Nginx 運行的用戶和用戶組 user nginx; #進程文件 pid /var/run/nginx.pid; #錯誤日志位置和級別,debug、info、notice、warn、error、crit error_log /var/log/nginx/error.log warn; #Nginx worker 的進程數,一般可設置為可用的CPU內核數。 worker_processes 8; #每個 worker 打開文件描述符的最大數量限制。理論值應該是最多打開文件數(系統的值ulimit -n)與 nginx 進程數相除,但是 nginx 分配請求并不均勻,所以建議與ulimit -n的值保持一致。 worker_rlimit_nofile 65535;
修改系統文件打開數量限制:
sudo sh -c ulimit -HSn 65535 //臨時修改
重啟后永久生效,則需要設置修改:
sudo vim /etc/security/limits.conf
在文件尾部添加:
* soft nofile 200000 * hard nofile 200000Events 模塊
events { #設置一個worker進程同時打開的最大連接數 worker_connections 2048; #告訴nginx收到一個新連接通知后接受盡可能多的連接 multi_accept on; #設置用于復用客戶端線程的輪詢方法。如果你使用Linux 2.6+,你應該使用epoll。如果你使用*BSD,你應該使用kqueue。 use epoll; }HTTP 模塊
http { #隱藏 Nginx 的版本號,提高安全性。 server_tokens off; #開啟高效文件傳輸模式,sendfile 指令指定 Nginx 是否調用sendfile 函數來輸出文件,對于普通應用設為 on,如果用來進行下載等應用磁盤 IO 重負載應用,可設置為 off,以平衡磁盤與網絡 I/O 處理速度,降低系統的負載。 sendfile on; #是否開啟目錄列表訪問,默認關閉。 autoindex off; #告訴 Nginx 在一個數據包里發送所有頭文件,而不一個接一個的發送 tcp_nopush on; #告訴 Nginx 不要緩存數據,而是一段一段的發送--當需要及時發送數據時,就應該給應用設置這個屬性,這樣發送一小塊數據信息時就不能立即得到返回值。Nginx 默認會始終工作在 tcp nopush 狀態下。但是當開啟前面的 sendfile on; 時,它的工作特點是 nopush 的最后一個包會自動轉轉換到 nopush off。為了減小那200ms的延遲,開啟 nodelay on; 將其很快傳送出去。結論就是 sendfile on; 開啟時,tcp_nopush 和 tcp_nodelay 都是on 是可以的。 tcp_nodelay on; #日志格式設定 log_format main "$remote_addr - $remote_user [$time_local] "$request" " "$status $body_bytes_sent "$http_referer" " ""$http_user_agent" "$http_x_forwarded_for""; #定義訪問日志,設置為 off 可以關閉日志,提高性能 access_log /var/log/nginx/access.log main; #連接超時時間,單位是秒 keepalive_timeout 120; #讀取HTTP頭部的超時時間,默認值 60。客戶端與服務器建立連接后將開始接收HTTP頭部,在這個過程中,如果在一個時間間隔(超時時間)內沒有讀取到客戶端發來的字節,則認為超時,并向客戶端返回408 ("Request timed out")響應。 client_header_timeout 60; #默認值 60。與client_header_timeout相似,只是這個超時時間只在讀取HTTP包體時才有效。 client_body_timeout 10; #發送響應的超時時間,默認值 60。即Nginx服務器向客戶端發送了數據包,但客戶端一直沒有去接收這個數據包。如果某個連接超過send_timeout定義的超時時間,那么Nginx將會關閉這個連接。 send_timeout 60; #連接超時后將通過向客戶端發送RST包來直接重置連接。這個選項打開后,Nginx會在某個連接超時后,不是使用正常情形下的四次握手關閉TCP連接,而是直接向用戶發送RST重置包,不再等待用戶的應答,直接釋放Nginx服務器上關于這個套接字使用的所有緩存(如TCP滑動窗口)。相比正常的關閉方式,它使得服務器避免產生許多處于FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT狀態的TCP連接。注意,使用RST重置包關閉連接會帶來一些問題,默認情況下不會開啟。 reset_timedout_connection off; #要限制連接,必須先有一個容器對連接進行計數,"zone=" 是給它一個名字,可以隨便叫,這個名字要跟下面的 limit_conn 一致。$binary_remote_addr 用二進制來儲存客戶端的地址,1m 可以儲存 32000 個并發會話。 limit_conn_zone $binary_remote_addr zone=addr:5m; #給定的key設置最大連接數。這里key是addr,我們設置的值是100,也就是說我們允許每一個IP地址最多同時打開有100個連接。 limit_conn addr 100; #對每個連接限速100k。這如果一個IP允許兩個并發連接,那么這個IP就是限速200K。 limit_rate 100k; #include 是一個在當前文件中包含另一個文件內容的指令。這里我們使用它來加載文件擴展名與文件類型映射表。nginx根據映射關系,設置http請求響應頭的Content-Type值。當在映射表找不到時,使用nginx.conf中default-type指定的默認值。 include /etc/nginx/mime.types; #設置文件使用的默認的MIME-type default_type text/html; #默認編碼 charset UTF-8; #該模塊可以讀取預先壓縮的gz文件,這樣可以減少每次請求進行gzip壓縮的CPU資源消耗。該模塊啟用后,nginx首先檢查是否存在請求靜態文件的gz結尾的文件,如果有則直接返回該gz文件內容。 gzip_static off; #開啟 gzip 壓縮。 gzip on; # 禁用客戶端為 IE6 時的 gzip功能。 gzip_disable "msie6"; #Nginx做為反向代理的時候啟用。可選值:off|expired|no-cache|no-sotre|private|no_last_modified|no_etag|auth|any gzip_proxied any; #設置允許壓縮的頁面最小字節數,頁面字節數從header頭中的Content-Length中進行獲取。建議設置成大于1k的字節數,小于1k可能會越壓越大。 gzip_min_length 1024; #設置數據的壓縮等級。這個等級可以是1-9之間的任意數值,9是最慢但是壓縮比最大的。 gzip_comp_level 5; #設置系統獲取幾個單位的緩存用于存儲gzip的壓縮結果數據流。 例如 4 4k 代表以4k為單位,按照原始數據大小以4k為單位的4倍申請內存。如果沒有設置,默認值是申請跟原始數據相同大小的內存空間去存儲gzip壓縮結果。 gzip_buffers 4 16k; #設置需要壓縮的數據格式。Nginx默認只對text/html進行壓縮。 gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; #為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時間文件沒被請求后刪除緩存。 open_file_cache max=65535 inactive=30s; #多長時間檢查一次緩存的有效信息 open_file_cache_valid 30s; #open_file_cache指令中的inactive參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打開的。出現 Last-Modified 不變的情況,就是因為當nginx對一個靜態文件緩存后,如果30s內還在訪問它,那么它的緩存就一直存在,直到30s內你不訪問了為止。 open_file_cache_min_uses 2; #是否記錄cache錯誤 open_file_cache_errors on; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }SERVER 模塊
server { #監聽端口,nginx 會根據請求的 HOST 來決定使用哪個 SERVER 段的配置。如果沒有匹配的 server_name,則默認使用配置文件中第一個。加上 default_server 則可以以指定沒有匹配時的默認規則。 #listen 80; listen 80 default_server; #域名可以有多個,用空格隔開 server_name www.test.com test.com; root /user/share/nginx/html/test; #404頁面配置 error_page 404 /404.html; #配置 ssl,有需要時開啟。 ssl on; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; location / { index index.html index.php; } #圖片緩存時間設置 location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ { expires 10d; } #JS和CSS緩存時間設置 location ~ .*.(js|css)?$ { expires 1h; } location ~ [^/].php(/|$) { fastcgi_index index.php; #開啟 PATH_INFO 支持,作用就是把參數按照給定的正則表達式分割成 $fastcgi_script_name 和 $fastcgi_path_info。 #例如:請求 index.php/id/1 不加此行配置時,fastcgi_script_name 是 /index.php/id/1,fastcgi_path_info 是空。 #加上之后,fastcgi_script_name 是 index.php,fastcgi_path_info 是 /id/1 fastcgi_split_path_info ^(.+.php)(.*)$; #此值即是 PHP 中 $_SERVER["SCRIPT_FILENAME"] 的值 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; #指定FastCGI服務器監聽端口與地址。須和 PHP-FPM 的設置相同。 #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/var/run/php5-fpm.sock; include fastcgi_params; } }參考資料
1、http://nginx.org/en/docs/
2、http://www.oschina.net/translate/nginx-setup
3、http://www.ha97.com/5194.html
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39152.html
摘要:于年發布,聚焦于高性能,高并發和低內存消耗問題。二服務的啟停控制在講解配置文件參數前,讓我們先來了解一下的啟停操作吧。在講解配置項之前,讓我們先了解一下各個塊的作用。配置最大連接數設置允許每個同時開啟的最大連接數,默認值。 一、nginx簡介、 ??nginx(發音engine x)是俄羅斯軟件工程師Igor Sysoev開發的免費開源web服務器軟件。nginx于2004年發布,聚焦...
摘要:在本文中,我們繼續延續前文,從前文給出的一份示例配置清單開始,詳解一下服務器的各種配置指令的作用和用法。是否允許同時接收多個網絡連接指令格式該指令默認為狀態,意指每個一次只能接收一個新到達的網絡連接。 本文已獲得原作者CodeSheep授權。showImg(https://segmentfault.com/img/remote/1460000015646704); 概述 在前面《Ngi...
摘要:在本文中,我們繼續延續前文,從前文給出的一份示例配置清單開始,詳解一下服務器的各種配置指令的作用和用法。是否允許同時接收多個網絡連接指令格式該指令默認為狀態,意指每個一次只能接收一個新到達的網絡連接。 本文已獲得原作者CodeSheep授權。showImg(https://segmentfault.com/img/remote/1460000015646704); 概述 在前面《Ngi...
摘要:在本文中,我們繼續延續前文,從前文給出的一份示例配置清單開始,詳解一下服務器的各種配置指令的作用和用法。是否允許同時接收多個網絡連接指令格式該指令默認為狀態,意指每個一次只能接收一個新到達的網絡連接。 showImg(https://segmentfault.com/img/remote/1460000015385948); 概述 在前面《Nginx服務器開箱體驗》 一文中我們從開箱...
摘要:基本配置文件和變量詳解基本配置文件運行的用戶進程數,建議設置為等于總核心數。允許客戶端請求的最大單文件字節數。如果主體超過緩沖區大小,則完整主體或其一部分將寫入臨時文件。該指令在配置的,和區塊使用。 Nginx基本配置文件和變量詳解 1. 基本配置文件 /etc/nginx/nginx.conf # nginx運行的用戶 user nginx; # nginx進程數,建議設置為等于C...
摘要:基本配置文件和變量詳解基本配置文件運行的用戶進程數,建議設置為等于總核心數。允許客戶端請求的最大單文件字節數。如果主體超過緩沖區大小,則完整主體或其一部分將寫入臨時文件。該指令在配置的,和區塊使用。 Nginx基本配置文件和變量詳解 1. 基本配置文件 /etc/nginx/nginx.conf # nginx運行的用戶 user nginx; # nginx進程數,建議設置為等于C...
閱讀 667·2021-10-09 09:41
閱讀 650·2019-08-30 15:53
閱讀 1078·2019-08-30 15:53
閱讀 1212·2019-08-30 11:01
閱讀 1570·2019-08-29 17:31
閱讀 992·2019-08-29 14:05
閱讀 1718·2019-08-29 12:49
閱讀 415·2019-08-28 18:17