######################## Nginx配置文件nginx.conf詳解 ########################
######################## 用于調(diào)試 ########################
## 是否以守護進程的方式運行nginx躏升,在調(diào)試階段我們選擇關(guān)閉守護進程模式
## default on
#daemon on;
## 是否以master/worker方式工作
## default on
#master_process on;
## error日志的設(shè)置
## /dev/null 關(guān)閉日志
## 輸出級別 debug辩棒、info、notice膨疏、warn一睁、error、crit佃却、alert者吁、emerg,
## 如果設(shè)置debug饲帅,必須在configure加入 --with-debug
## logs在mac上相目錄 /usr/local/Cellar/nginx/1.13.12/logs/nginx_error.log
error_log logs/nginx_error.log error;
## 僅對指定客戶端輸出debug級別日志(針對線上bug調(diào)試特別有用)
## 如果設(shè)置debug复凳,必須在configure加入 --with-debug
#events {
# debug_connection 127.0.0.1;
# debug_connection localhost;
# debug_connection 192.0.2.0/24;
# debug_connection ::1;
# debug_connection 2001:0db8::/32;
# debug_connection unix:;
#}
######################## 正常配置 ########################
## 定義Nginx運行的用戶和用戶組(用于設(shè)置fork出的worker進程運行在哪個用戶和用戶組下,如果不配置用戶組灶泵,默認和用戶同名)
user leon staff;
## 定義環(huán)境變量
#env TEST_PATH=/tmp/;
## 加載其他配置文件(這里可以是絕對路徑育八,也可以是相對路徑,相對于nginx.conf文件所在目錄赦邻,還可加入通配符)
## include /path/files
#include vhosts/*.conf;
## 保存master進程ID的pid文件存放路徑髓棋,可隨時修改
## logs在mac上相目錄 /usr/local/Cellar/nginx/1.13.12/logs/nginx.pid
pid logs/nginx.pid;
## 用于在不重啟主進程的情況下增加worker processes文件大小限制
#worker_rlimit_core 16M
## 指定worker進程可以打開的最大句柄數(shù)
## 工作模式與連接數(shù)上限:
## 這個指令是指當(dāng)一個nginx進程打開的最多文件描述符數(shù)目,理論值應(yīng)該是最多打開文件數(shù)(ulimit -n)
## 與nginx進程數(shù)相除惶洲,但是nginx分配請求并不是那么均勻按声,所以最好與ulimit -n 的值保持一致。
## 現(xiàn)在在linux 2.6內(nèi)核下開啟文件打開數(shù)為65535恬吕,worker_rlimit_nofile就相應(yīng)應(yīng)該填寫65535签则。
## 這是因為nginx調(diào)度時分配請求到進程并不是那么的均衡,所以假如填寫10240铐料,總并發(fā)量達到3-4萬時就有進程可能超過10240了渐裂,這時會返回502錯誤。
#worker_rlimit_nofile 65535
######################## 優(yōu)化配置項 ########################
## [auto]參數(shù):自動探測cpu核數(shù) 支持版本開始于 1.3.8 和 1.2.5.
worker_processes 2;
## 綁定Nginx worker進程到指定的內(nèi)核,僅對Linux系統(tǒng)有效
#worker_cpu_affinity 0101 1010;
## SSL硬件加速,使用[openssl engine -t]命令查詢是否有SSL硬件加速設(shè)備
#ssl_engine device;
## Nginx worker 進程優(yōu)先級設(shè)置, nice優(yōu)先級謙讓制钠惩,[-20 ~ +19], 不建議比內(nèi)核進程的nice值(-5)還小
worker_priority 0;
######################## 事件類配置項 ########################
events {
## 是否打開accept鎖柒凉,這個是Nginx的負載均衡鎖,它的功能是可以讓多個worker進程輪流的與新的客戶端建立
## TCP連接妻柒,如果關(guān)閉它扛拨,那么建立TCP連接的耗時會更短耘分,但worker進程之間的負載會非常不均衡举塔,所以不建議關(guān)閉绑警。
## default on
accept_mutex on;
## 配置鎖文件路徑,如果accept_mutex關(guān)閉央渣,此配置不生效计盒,在accept_mutex打開的情況下,由于一些原因
## 導(dǎo)致Nginx不支持原子鎖芽丹,這個鎖文件路徑配置才生效北启。
#lock_file logs/nginx.lock;
## 文件鎖獲取延時
#accept_mutex_delay 500ms;
## 批量獲取連接,當(dāng)時間模型通知有新連接時拔第,盡可能對本次調(diào)度中客戶端發(fā)起的所有TCP請求都建立連接
## default off
#multi_accept on;
## 參考事件模型咕村,use [ kqueue | rtsig | epoll | /dev/poll | select | poll | eventport];
## epoll模型是Linux 2.6以上版本內(nèi)核中的高性能網(wǎng)絡(luò)I/O模型,linux建議epoll蚊俺,如果跑在FreeBSD上面懈涛,就用kqueue模型。
## 補充說明:
## 與apache相類泳猬,nginx針對不同的操作系統(tǒng)批钠,有不同的事件模型
## A)標準事件模型
## select、poll屬于標準事件模型得封,如果當(dāng)前系統(tǒng)不存在更有效的方法埋心,nginx會選擇select或poll
## B)高效事件模型
## kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用雙處理器的MacOS X系統(tǒng)使用kqueue可能會造成內(nèi)核崩潰。
## epoll:使用于Linux內(nèi)核2.6版本及以后的系統(tǒng)忙上。
## /dev/poll:使用于Solaris 7 11/99+拷呆,HP/UX 11.22+ (eventport),IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+晨横。
## eventport:使用于Solaris 10洋腮。 為了防止出現(xiàn)內(nèi)核崩潰的問題, 有必要安裝安全補丁手形。
use kqueue;
## 單個進程最大連接數(shù)(最大連接數(shù)=連接數(shù)*進程數(shù))
## 根據(jù)硬件調(diào)整啥供,和前面工作進程配合起來用,盡量大库糠,但是別把cpu跑到100%就行伙狐。每個進程允許的最多連接數(shù),理論上每臺nginx服務(wù)器的最大連接數(shù)為
worker_connections 65535;
}
#設(shè)定http服務(wù)器瞬欧,利用它的反向代理功能提供負載均衡支持
http {
## 文件擴展名與文件類型映射表
include mime.types;
## 默認文件類型
default_type application/octet-stream;
## 默認編碼
charset utf-8;
## 日志格式設(shè)定
## $remote_addr與$http_x_forwarded_for用以記錄客戶端的ip地址贷屎;
## $remote_user:用來記錄客戶端用戶名稱;
## $time_local: 用來記錄訪問時間與時區(qū)艘虎;
## $request: 用來記錄請求的url與http協(xié)議唉侄;
## $status: 用來記錄請求狀態(tài);成功是200野建,
## $body_bytes_sent :記錄發(fā)送給客戶端文件主體內(nèi)容大惺艋恬叹;
## $http_referer:用來記錄從那個頁面鏈接訪問過來的;
## $http_user_agent:記錄客戶瀏覽器的相關(guān)信息同眯;
## 通常web服務(wù)器放在反向代理的后面绽昼,這樣就不能獲取到客戶的IP地址了,通過$remote_add拿到的IP地址是反向代理服務(wù)器的iP地址须蜗。
## 反向代理服務(wù)器在轉(zhuǎn)發(fā)請求的http頭信息中硅确,可以增加x_forwarded_for信息,用以記錄原有客戶端的IP地址和原來客戶端的請求的服務(wù)器地址明肮。
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
error_log logs/error.log;
## keepalive超時時間菱农。
keepalive_timeout 60;
## 服務(wù)器名字的hash表大小
## 保存服務(wù)器名字的hash表是由指令server_names_hash_max_size 和server_names_hash_bucket_size所控制的。
## 參數(shù)hash bucket size總是等于hash表的大小柿估,并且是一路處理器緩存大小的倍數(shù)大莫。在減少了在內(nèi)存中的存取次數(shù)后,
## 使在處理器中加速查找hash表鍵值成為可能官份。如果hash bucket size等于一路處理器緩存的大小只厘,那么在查找鍵的時候,
## 最壞的情況下在內(nèi)存中查找的次數(shù)為2舅巷。第一次是確定存儲單元的地址羔味,第二次是在存儲單元中查找鍵 值。
## 因此钠右,如果Nginx給出需要增大hash max size 或 hash bucket size的提示赋元,那么首要的是增大前一個參數(shù)的大小.
server_names_hash_bucket_size 128;
## 客戶端請求頭部的緩沖區(qū)大小。這個可以根據(jù)你的系統(tǒng)分頁大小來設(shè)置飒房,一般一個請求頭的大小不會超過1k搁凸,不過由于一般系統(tǒng)分頁都要大于1k,所以這里設(shè)置為分頁大小狠毯。
## 分頁大小可以用命令[getconf PAGESIZE]取得护糖。值:4096
## 但也有client_header_buffer_size超過4k的情況,但是client_header_buffer_size該值必須設(shè)置為“系統(tǒng)分頁大小”的整倍數(shù)嚼松。
client_header_buffer_size 32k;
## 客戶請求頭緩沖大小嫡良。nginx默認會用client_header_buffer_size這個buffer來讀取header值,如果header過大献酗,它會使用large_client_header_buffers來讀取寝受。
large_client_header_buffers 4 64k;
## 這個將為打開文件指定緩存,默認是沒有啟用的罕偎,max指定緩存數(shù)量很澄,建議和打開文件數(shù)一致,inactive是指經(jīng)過多長時間文件沒被請求后刪除緩存。
open_file_cache max=65535 inactive=60s;
## 這個是指多長時間檢查一次緩存的有效信息甩苛。
## 語法:open_file_cache_valid time 默認值:open_file_cache_valid 60 使用字段:http, server, location 這個指令指定了何時需要檢查open_file_cache中緩存項目的有效信息.
open_file_cache_valid 80s;
## open_file_cache指令中的inactive參數(shù)時間內(nèi)文件的最少使用次數(shù)忙干,如果超過這個數(shù)字,文件描述符一直是在緩存中打開的浪藻,如上例,如果有一個文件在inactive時間內(nèi)一次沒被使用乾翔,它將被移除爱葵。
## 語法:open_file_cache_min_uses number 默認值:open_file_cache_min_uses 1
## 使用模塊:http, server, location
## 這個指令指定了在open_file_cache指令無效的參數(shù)中一定的時間范圍內(nèi)可以使用的最小文件數(shù),如果使用更大的值,文件描述符在cache中總是打開狀態(tài).
open_file_cache_min_uses 1;
## 使用模塊:http, server, location
## 這個指令指定是否在搜索一個文件時記錄cache錯誤.
open_file_cache_errors on;
## 設(shè)定通過nginx上傳文件的大小
client_max_body_size 8m;
## 開啟高效文件傳輸模式
## sendfile指令指定 nginx 是否調(diào)用sendfile 函數(shù)(zero copy 方式)來輸出文件,對于普通應(yīng)用反浓,必須設(shè)為on萌丈。
## 如果用來進行下載等應(yīng)用磁盤IO重負載應(yīng)用,可設(shè)置為off雷则,以平衡磁盤與網(wǎng)絡(luò)IO處理速度辆雾,降低系統(tǒng)uptime。
## 注意:如果圖片顯示不正常把這個改成off月劈。
sendfile on;
## 此選項允許或禁止使用socke的TCP_CORK的選項度迂,此選項僅在使用sendfile的時候使用
tcp_nopush on;
## 開啟目錄列表訪問,合適下載服務(wù)器
## default off
#autoindex on;
## FastCGI相關(guān)參數(shù)是為了改善網(wǎng)站的性能:減少資源占用猜揪,提高訪問速度惭墓。下面參數(shù)看字面意思都能理解。
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
## gzip模塊設(shè)置
gzip on; #開啟gzip壓縮輸出
gzip_min_length 1k; #最小壓縮文件大小
gzip_buffers 4 16k; #壓縮緩沖區(qū)
gzip_http_version 1.0; #壓縮版本(默認1.1而姐,前端如果是squid2.5請使用1.0)
gzip_comp_level 2; #壓縮等級
gzip_types text/plain application/x-javascript text/css application/xml; #壓縮類型腊凶,默認就已經(jīng)包含textml,所以下面就不用再寫了拴念,寫上去也不會有問題钧萍,但是會有一個warn。
gzip_vary on;
## proxy 負載均衡
upstream tomcat_client {
## upstream的負載均衡政鼠,weight是權(quán)重风瘦,可以根據(jù)機器配置定義權(quán)重。weigth參數(shù)表示權(quán)值公般,權(quán)值越高被分配到的幾率越大弛秋。
server localhost:8080 weight=1;
#server 192.168.80.121:80 weight=3;
#server 192.168.80.122:80 weight=2;
#nginx的upstream目前支持4種方式的分配
#1、輪詢(默認)
#每個請求按時間順序逐一分配到不同的后端服務(wù)器俐载,如果后端服務(wù)器down掉蟹略,能自動剔除。
#2遏佣、weight
#指定輪詢幾率挖炬,weight和訪問比率成正比,用于后端服務(wù)器性能不均的情況状婶。
#例如:
#upstream bakend {
# server 192.168.0.14 weight=10;
# server 192.168.0.15 weight=10;
#}
#2意敛、ip_hash
#每個請求按訪問ip的hash結(jié)果分配馅巷,這樣每個訪客固定訪問一個后端服務(wù)器,可以解決session的問題。
#例如:
#upstream bakend {
# ip_hash;
# server 192.168.0.14:88;
# server 192.168.0.15:80;
#}
#3饶碘、fair(第三方)
#按后端服務(wù)器的響應(yīng)時間來分配請求誊锭,響應(yīng)時間短的優(yōu)先分配。
#upstream backend {
# server server1;
# server server2;
# fair;
#}
#4敞曹、url_hash(第三方)
#按訪問url的hash結(jié)果來分配請求,使每個url定向到同一個后端服務(wù)器综膀,后端服務(wù)器為緩存時比較有效澳迫。
#例:在upstream中加入hash語句,server語句中不能寫入weight等其他的參數(shù)剧劝,hash_method是使用的hash算法
#upstream backend {
# server squid1:3128;
# server squid2:3128;
# hash $request_uri;
# hash_method crc32;
#}
#tips:
#upstream bakend{#定義負載均衡設(shè)備的Ip及設(shè)備狀態(tài)}{
# ip_hash;
# server 127.0.0.1:9090 down;
# server 127.0.0.1:8080 weight=2;
# server 127.0.0.1:6060;
# server 127.0.0.1:7070 backup;
#}
#在需要使用負載均衡的server中增加 proxy_pass http://bakend/;
#每個設(shè)備的狀態(tài)設(shè)置為:
#1.down表示單前的server暫時不參與負載
#2.weight為weight越大橄登,負載的權(quán)重就越大。
#3.max_fails:允許請求失敗的次數(shù)默認為1.當(dāng)超過最大次數(shù)時讥此,返回proxy_next_upstream模塊定義的錯誤
#4.fail_timeout:max_fails次失敗后拢锹,暫停的時間。
#5.backup: 其它所有的非backup機器down或者忙的時候萄喳,請求backup機器面褐。所以這臺機器壓力會最輕。
#nginx支持同時設(shè)置多組的負載均衡取胎,用來給不用的server來使用展哭。
#client_body_in_file_only設(shè)置為On 可以講client post過來的數(shù)據(jù)記錄到文件中用來做debug
#client_body_temp_path設(shè)置記錄文件的目錄 可以設(shè)置最多3層目錄
#location對URL進行匹配.可以進行重定向或者進行新的代理 負載均衡
}
## Nginx信息服務(wù)
server {
listen 8000;
server_name localhost;
## 設(shè)定查看Nginx狀態(tài)的地址
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
## 不配置即沒有密碼
#auth_basic_user_file confpasswd;
#htpasswd文件的內(nèi)容可以用apache提供的htpasswd工具來產(chǎn)生。
}
}
#虛擬主機的配置
server {
listen 7000;
## 服務(wù)域名闻蛀,可以有多個匪傍,用空格 隔開
server_name localhost www.xxx.com;
index index.html index.htm;
root /data/www/jd;
## 錯誤頁面配置
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
## log
access_log logs/localhost_access.log main;
error_log logs/localhost_error.log;
## 對******進行負載均衡
#location ~ .*.(php|php5)?$ {
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# include fastcgi.conf;
#}
## 圖片緩存時間設(shè)置
#location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
# expires 10d;
#}
## JS和CSS緩存時間設(shè)置
#location ~ .*.(js|css)?$ {
# expires 1h;
#}
## 對 "/" 啟用反向代理
location / {
proxy_pass http://tomcat_client;
proxy_redirect default;
proxy_set_header X-Real-IP $remote_addr;
## 后端的Web服務(wù)器可以通過X-Forwarded-For>獲取用戶真實IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
## 可選配置
proxy_set_header Host $host;
## 允許客戶端請求的最大單文件字節(jié)數(shù)
client_max_body_size 10m;
## 緩沖區(qū)代理緩沖用戶端請求的最大字節(jié)數(shù),緩沖區(qū)代理緩沖用戶端請求的最大字節(jié)數(shù),
## 如果把它設(shè)置為比較大的數(shù)值觉痛,例如256k役衡,那么,無論使用firefox還是IE瀏覽器薪棒,
## 來提交任意小于256k的圖片手蝎,都很正常。如果注釋該指令俐芯,使用默認的client_body_buffer_size設(shè)置棵介,
## 也就是操作系統(tǒng)頁面大小的兩倍,8k或者16k吧史,問題就出現(xiàn)了邮辽。無論使用firefox4.0還是IE8.0,
## 提交一個比較大,200k左右的圖片吨述,都返回500 Internal Server Error錯誤
client_body_buffer_size 128k;
## 表示使nginx阻止HTTP應(yīng)答代碼為400或者更高的應(yīng)答岩睁。
proxy_intercept_errors on;
## nginx跟后端服務(wù)器連接超時時間(代理連接超時)_后端服務(wù)器連接的超時時間_發(fā)起握手等候響應(yīng)超時時間
proxy_connect_timeout 90;
## 后端服務(wù)器數(shù)據(jù)回傳時間(代理發(fā)送超時)_就是在規(guī)定時間之內(nèi)后端服務(wù)器必須傳完所有的數(shù)據(jù)
proxy_send_timeout 90;
## 連接成功后(代理接收超時)_等候后端服務(wù)器響應(yīng)時間_其實已經(jīng)進入后端的排隊之中等候處理(也可以說是后端服務(wù)器處理請求的時間)
proxy_read_timeout 90;
## 設(shè)置代理服務(wù)器(nginx)保存用戶頭信息的緩沖區(qū)大小
## 設(shè)置從被代理服務(wù)器讀取的第一部分應(yīng)答的緩沖區(qū)大小,通常情況下這部分應(yīng)答中包含一個小的應(yīng)答頭揣云,
## 默認情況下這個值的大小為指令proxy_buffers中指定的一個緩沖區(qū)的大小捕儒,不過可以將其設(shè)置為更小
proxy_buffer_size 4k;
## 設(shè)置用于讀取應(yīng)答(來自被代理服務(wù)器)的緩沖區(qū)數(shù)目和大小,
## 默認情況也為分頁大小邓夕,根據(jù)操作系統(tǒng)的不同可能是4k或者8k,網(wǎng)頁平均在32k以下的設(shè)置
proxy_buffers 6 32k;
## 高負荷下緩沖大辛跤ā(proxy_buffers*2)
proxy_busy_buffers_size 64k;
## 設(shè)置在寫入proxy_temp_path時數(shù)據(jù)的大小,預(yù)防一個工作進程在傳遞文件時阻塞太長
## 設(shè)定緩存文件夾大小翎迁,大于這個值,將從upstream服務(wù)器傳
proxy_temp_file_write_size 64k;
}
}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
## 加載其他配置項净薛,這樣方便管理
include servers/*;
}
Nginx配置詳解
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門剥悟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人曼库,你說我怎么就攤上這事区岗。” “怎么了毁枯?”我有些...
- 文/不壞的土叔 我叫張陵慈缔,是天一觀的道長。 經(jīng)常有香客問我种玛,道長藐鹤,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任赂韵,我火速辦了婚禮娱节,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘祭示。我一直安慰自己括堤,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著悄窃,像睡著了一般讥电。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上轧抗,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼穷躁!你這毒婦竟也來了耕肩?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布特咆,位于F島的核電站,受9級特大地震影響录粱,放射性物質(zhì)發(fā)生泄漏腻格。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一啥繁、第九天 我趴在偏房一處隱蔽的房頂上張望菜职。 院中可真熱鬧,春花似錦旗闽、人聲如沸酬核。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽嫡意。三九已至举瑰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蔬螟,已是汗流浹背此迅。 一陣腳步聲響...