創(chuàng)新互聯(lián)是一家專業(yè)提供門源企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、成都網(wǎng)站制作、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為門源眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
#配置用戶或者組,默認(rèn)為nobody nobody
user nobody;
#啟動進(jìn)程,根據(jù)硬件調(diào)整,通常等于CPU數(shù)量或者2倍于CPU
worker_processes 1;
#指定日志路徑,級別。這個設(shè)置可以放入全局塊,http塊,server塊,級別以此為:debug|info|notice|warn|error|crit|alert|emerg
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#指定nginx進(jìn)程運(yùn)行文件存放地址
pid logs/nginx.pid;
#工作模式及連接數(shù)上限
events {
#設(shè)置網(wǎng)路連接序列化,防止驚群現(xiàn)象發(fā)生,默認(rèn)為on
accept_mutex on;
#設(shè)置一個進(jìn)程是否同時接受多個網(wǎng)絡(luò)連接,默認(rèn)為off
multi_accept on;
#epoll是多路復(fù)用IO(I/O Multiplexing)中的一種方式,
#僅用于linux2.6以上內(nèi)核,可以大大提高nginx的性能
#linux建議epoll,F(xiàn)reeBSD建議采用kqueue,window下不指定。
#補(bǔ)充說明: 與apache相類,nginx針對不同的操作系統(tǒng),有不同的事件模型
#A)標(biāo)準(zhǔn)事件模型:Select、poll屬于標(biāo)準(zhǔn)事件模型,如果當(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)核崩潰的問題, 有必要安裝安全補(bǔ)丁
# use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]
use epoll;
#單個后臺worker process進(jìn)程的最大并發(fā)鏈接數(shù)
worker_connections 1024;
# 并發(fā)總數(shù)是 worker_processes 和 worker_connections 的乘積
# 即 max_clients = worker_processes * worker_connections
# 在設(shè)置了反向代理的情況下,max_clients = worker_processes * worker_connections / 4 為什么
# 為什么上面反向代理要除以4,應(yīng)該說是一個經(jīng)驗(yàn)值
# 根據(jù)以上條件,正常情況下的Nginx Server可以應(yīng)付的最大連接數(shù)為:4 * 8000 = 32000
# worker_connections 值的設(shè)置跟物理內(nèi)存大小有關(guān)
# 因?yàn)椴l(fā)受IO約束,max_clients的值須小于系統(tǒng)可以打開的最大文件數(shù)
# 而系統(tǒng)可以打開的最大文件數(shù)和內(nèi)存大小成正比,一般1GB內(nèi)存的機(jī)器上可以打開的文件數(shù)大約是10萬左右
# 我們來看看360M內(nèi)存的vps可以打開的文件句柄數(shù)是多少:
# $ cat /proc/sys/fs/file-max
# 輸出 34336
# 32000 < 34336,即并發(fā)連接總數(shù)小于系統(tǒng)可以打開的文件句柄總數(shù),這樣就在操作系統(tǒng)可以承受的范圍之內(nèi)
# 所以,worker_connections 的值需根據(jù) worker_processes 進(jìn)程數(shù)目和系統(tǒng)可以打開的最大文件總數(shù)進(jìn)行適當(dāng)?shù)剡M(jìn)行設(shè)置
# 使得并發(fā)總數(shù)小于操作系統(tǒng)可以打開的最大文件數(shù)目
# 其實(shí)質(zhì)也就是根據(jù)主機(jī)的物理CPU和內(nèi)存進(jìn)行配置
# 當(dāng)然,理論上的并發(fā)總數(shù)可能會和實(shí)際有所偏差,因?yàn)橹鳈C(jī)還有其他的工作進(jìn)程需要消耗系統(tǒng)資源。
# ulimit -SHn 65535
#keepalive超時時間
keepalive_timeout 60;
#客戶端請求頭部的緩沖區(qū)大小。這個可以根據(jù)你的系統(tǒng)分頁大小來設(shè)置,一般一個請求頭的大小不會超過1k,
#不過由于一般系統(tǒng)分頁都要大于1k,所以這里設(shè)置為分頁大小。分頁大小可以用命令getconf PAGESIZE 取得。
#但也有client_header_buffer_size超過4k的情況,但是client_header_buffer_size該值必須設(shè)置為“系統(tǒng)分頁大小”的整倍數(shù)
client_header_buffer_size 4k;
#這個將為打開文件指定緩存,默認(rèn)是沒有啟用的,max指定緩存數(shù)量,建議和打開文件數(shù)一致,inactive是指經(jīng)過多長時間文件沒被請求后刪除緩存。
open_file_cache max=65535 inactive=60s;
#這個是指多長時間檢查一次緩存的有效信息
open_file_cache_valid 80s;
#open_file_cache指令中的inactive參數(shù)時間內(nèi)文件的最少使用次數(shù),如果超過這個數(shù)字,
#文件描述符一直是在緩存中打開的,如上例,如果有一個文件在inactive時間內(nèi)一次沒被使用,它將被移除。
open_file_cache_min_uses 1;
}
http {
#隱藏nginx的版本號
server_tokens off;
#設(shè)定mime類型,類型由mime.type文件定義
include mime.types;
#默認(rèn)文件類型
default_type application/octet-stream;
#默認(rèn)編碼
charset utf-8;
#取消服務(wù)日志
access_log off;
#設(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)信息;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#combined為日志格式的默認(rèn)值
access_log logs/access.log main;
#服務(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;
client_header_buffer_size 32k;
#客戶請求頭緩沖大小。nginx默認(rèn)會用client_header_buffer_size這個buffer來讀取header值,如果
#header過大,它會使用 large_client_header_buffers 來讀取。
large_client_header_buffers 8 128k;
#這個指令指定緩存是否啟用;打開緩存的同時也指定了緩存最大數(shù)目,以及緩存的時間。
#我們可以設(shè)置一個相對高的最大時間,這樣我們可以在它們不活動超過20秒后清除掉
open_file_cache max=100000 inactive=20s;
#在open_file_cache中指定檢測正確信息的間隔時間。
open_file_cache_valid 30s;
#定義了open_file_cache中指令參數(shù)不活動時間期間里最小的文件數(shù)。使用字段:http, server, location
open_file_cache_min_uses 2;
#指定了當(dāng)搜索一個文件時是否緩存錯誤信息,也包括再次給配置中添加文件。
#使用字段:http, server, location
open_file_cache_errors on;
#設(shè)定通過nginx上傳文件的大小
client_max_body_size 300m;
#sendfile 指令指定 nginx 是否調(diào)用 sendfile 函數(shù)(zero copy 方式)來輸出文件,
#對于普通應(yīng)用,必須設(shè)為 on,
#如果用來進(jìn)行下載等應(yīng)用磁盤IO重負(fù)載應(yīng)用,可設(shè)置為 off,
#以平衡磁盤與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的uptime.
sendfile on;
#連接超時時間
keepalive_timeout 65;
#后端服務(wù)器連接的超時時間_發(fā)起握手等候響應(yīng)超時時間
proxy_connect_timeout 90;
#連接成功后_等候后端服務(wù)器響應(yīng)時間_其實(shí)已經(jīng)進(jìn)入后端的排隊(duì)之中等候處理(也可以說是后端服務(wù)器處理請求的時間)
proxy_read_timeout 180;
#后端服務(wù)器數(shù)據(jù)回傳時間_就是在規(guī)定時間之內(nèi)后端服務(wù)器必須傳完所有的數(shù)據(jù)
proxy_send_timeout 180;
#設(shè)置代理服務(wù)器(nginx)保存用戶頭信息的緩沖區(qū)大小
proxy_buffer_size 256k;
#設(shè)置用于讀取應(yīng)答(來自被代理服務(wù)器)的緩沖區(qū)數(shù)目和大小,默認(rèn)情況也為分頁大小,根據(jù)操作系統(tǒng)的不同可能是4k或者8k
proxy_buffers 4 256k;
#高負(fù)荷下緩沖大?。╬roxy_buffers*2)
proxy_busy_buffers_size 256k;
#緩沖區(qū)代理緩沖用戶端請求的最大字節(jié)數(shù)
client_body_buffer_size
#設(shè)置在寫入proxy_temp_path時數(shù)據(jù)的大小,預(yù)防一個工作進(jìn)程在傳遞文件時阻塞太長;
#設(shè)定緩存文件夾大小,大于這個值,將從upstream服務(wù)器傳
proxy_temp_file_write_size 256k;
#告訴nginx在一個數(shù)據(jù)包里發(fā)送所有頭文件,而不一個接一個的發(fā)送
tcp_nopush on;
#告訴nginx不要緩存數(shù)據(jù),而是一段一段的發(fā)送
tcp_nodelay on;
#開啟gzip壓縮
gzip on;
#為指定的客戶端禁用gzip功能。我們設(shè)置成IE6或者更低版本以使我們的方案能夠廣泛兼容。
gzip_disable "MSIE [1-6].";
#告訴nginx在壓縮資源之前,先查找是否有預(yù)先gzip處理過的資源。這要求你預(yù)先壓縮你的文件(在這個例子中被注釋掉了)
#從而允許你使用最高壓縮比,這樣nginx就不用再壓縮這些文件了(想要更詳盡的gzip_static的信息,請點(diǎn)擊這里)。
gzip_static on;
#允許或者禁止壓縮基于請求和響應(yīng)的響應(yīng)流。我們設(shè)置為any,意味著將會壓縮所有的請求。
gzip_proxied any;
#最小壓縮文件大小
gzip_min_length 1k;
#壓縮緩沖區(qū)
gzip_buffers 4 16k;
#壓縮版本(默認(rèn)1.1,前端如果是squid2.5請使用1.0)
gzip_http_version 1.0;
#壓縮等級
gzip_comp_level 2;
#壓縮類型,默認(rèn)就已經(jīng)包含text/html,所以下面就不用再寫了,寫上去也不會有問題,但是會有一個warn。
gzip_types text/plain application/x-javascript text/css application/xml;
#和http頭有關(guān)系,加個vary頭,給代理服務(wù)器用的,有的瀏覽器支持壓縮,有的不支持,所以避免浪費(fèi)不支持的也壓縮,所以根據(jù)客戶端的HTTP頭來判斷,是否需要壓縮
gzip_vary on;
#limit_zone crawler $binary_remote_addr 10m; #開啟限制IP連接數(shù)的時候需要使用
upstream mysvr {
#nginx的upstream目前支持4種方式的分配
#1、輪詢(默認(rèn))每個請求按時間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動剔除。
#2、weight 指定輪詢幾率,weight和訪問比率成正比,用于后端服務(wù)器性能不均的情況。
#3、ip_hash 每個請求按訪問ip的hash結(jié)果分配,這樣每個訪客固定訪問一個后端服務(wù)器,可以解決session的問題。
#4、fair(第三方):按后端服務(wù)器的響應(yīng)時間來分配請求,響應(yīng)時間短的優(yōu)先分配。
#5、url_hash(第三方):按訪問url的hash結(jié)果來分配請求,使每個url定向到同一個后端服務(wù)器,后端服務(wù)器為緩存時比較有效。
#每個設(shè)備的狀態(tài)設(shè)置為:
#1.down表示單前的server暫時不參與負(fù)載
#2.weight為weight越大,負(fù)載的權(quán)重就越大。
#3.max_fails:允許請求失敗的次數(shù)默認(rèn)為1.當(dāng)超過最大次數(shù)時,返回proxy_next_upstream模塊定義的錯誤
#4.fail_timeout:max_fails次失敗后,暫停的時間。
#5.backup: 其它所有的非backup機(jī)器down或者忙的時候,請求backup機(jī)器。所以這臺機(jī)器壓力會最輕。
server 127.0.0.1:7878 down;
server 192.168.10.121:3333 backup; #熱備
server 192.168.10.122:3333 weight=2;
server 192.168.10.123:3333 max_fails=2 fail_timeout=3s;
}
#設(shè)定虛擬主機(jī)配置
server {
#單連接請求上限次數(shù)。
keepalive_requests 120;
#偵聽80端口
listen 80;
#定義使用 localhost訪問
server_name localhost;
#定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置
root html;
#設(shè)定本虛擬主機(jī)的訪問日志
access_log logs/nginx.access.log main;
#默認(rèn)請求:location對URL進(jìn)行匹配.可以進(jìn)行重定向或者進(jìn)行新的代理 負(fù)載均衡
location / {
#后端的Web服務(wù)器可以通過X-Forwarded-For獲取用戶真實(shí)IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#請求轉(zhuǎn)向mysvr 定義的服務(wù)器列表
proxy_pass mysvr;
proxy_redirect default;
#定義首頁索引文件的名稱
index index.php index.html index.htm;
}
#防止網(wǎng)絡(luò)爬蟲
if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot") {
return 403;
}
# 定義錯誤提示頁面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
#靜態(tài)文件,nginx自己處理 ,正則匹配,~為區(qū)分大小寫,~*為不區(qū)分大小寫。
location ~ ^/(p_w_picpaths|javascript|js|css|flash|media|static)/ {
#讓客戶端緩存不常改變的數(shù)據(jù)
#過期30天,靜態(tài)文件不怎么更新,過期可以設(shè)大一點(diǎn),
#如果頻繁更新,則可以設(shè)置得小一點(diǎn)。
expires 30d;
}
#PHP 腳本請求全部轉(zhuǎn)發(fā)到 FastCGI處理. 使用FastCGI默認(rèn)配置.
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#禁止訪問 .htxxx 文件
location ~ /.ht {
#設(shè)置默認(rèn)頁
index vv.txt;
#root path; #根目錄
deny all;
#拒絕的ip
deny 127.0.0.1;
#允許的ip
allow 172.18.5.54;
}
}
}
分享標(biāo)題:nginx之nginx.conf配置詳解
URL網(wǎng)址:http://aaarwkj.com/article32/jegdsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、網(wǎng)站導(dǎo)航、網(wǎng)站制作、電子商務(wù)、外貿(mào)網(wǎng)站建設(shè)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)