普通配置
==性能配置
運(yùn)行用戶
user nobody;
pid文件
pid logs/nginx.pid;
==worker進(jìn)程數(shù)嫌吠,通常設(shè)置等同于CPU數(shù)量刨秆,auto為自動(dòng)檢測(cè)
worker_processes auto;
==worker進(jìn)程打開最大文件數(shù)翔忽,可CPU*10000設(shè)置
worker_rlimit_nofile 100000;
全局錯(cuò)誤日志
error_log logs/error.log;
events模塊中包含nginx中所有處理連接的設(shè)置
events {
#==worker進(jìn)程同時(shí)打開的最大連接數(shù),可CPU*2048設(shè)置
worker_connections 2048;
#==告訴nginx收到一個(gè)新鏈接通知后接受盡可能多的鏈接
multi_accept on;
#==設(shè)置用于復(fù)用客戶端線程的輪訓(xùn)方法
use epoll;
}
http模塊控制著nginx http處理的所有核心特性
http {
#打開或關(guān)閉錯(cuò)誤頁面中的nginx版本號(hào)deng
server_tokens on;
#!server_tag on;
#!server_info on;
#==優(yōu)化磁盤IO設(shè)置,指定nginx是否調(diào)用sendfile函數(shù)來輸出文件,普通應(yīng)用設(shè)為on事镣,下載等磁盤IO高的應(yīng)用,可設(shè)為off
sendfile on;
#==設(shè)置nginx在一個(gè)數(shù)據(jù)包里發(fā)送所有頭文件揪胃,而不是一個(gè)接一個(gè)的發(fā)送
tcp_nopush on;
#==設(shè)置nginx不要緩存數(shù)據(jù)璃哟,而是一段一段的發(fā)送,
#==當(dāng)需要及時(shí)發(fā)送數(shù)據(jù)時(shí)只嚣,就應(yīng)該給應(yīng)用設(shè)置這個(gè)屬性,這樣發(fā)送一小塊數(shù)據(jù)信息時(shí)就不能立即得到返回值
tcp_nodelay on;
#==設(shè)置nginx是否存儲(chǔ)訪問日志艺沼,關(guān)閉這個(gè)可以讓讀取磁盤IO操作更快
access_log on;
#設(shè)置nginx只記錄嚴(yán)重錯(cuò)誤
#error_log logs/error.log crit;
#==給客戶端分配keep-alive鏈接超時(shí)時(shí)間
keepalive_timeout 30;
#設(shè)置用戶保存各種key的共享內(nèi)存的參數(shù)册舞,5m指的是5兆
limit_conn_zone $binary_remote_addr zone=addr:5m;
#為給定的key設(shè)置最大的連接數(shù),這里的key是addr障般,設(shè)定的值是100调鲸,就是說允許每一個(gè)IP地址最多同時(shí)打開100個(gè)連接
limit_conn addr 100;
#include指在當(dāng)前文件中包含另一個(gè)文件內(nèi)容
include mime.types;
#設(shè)置文件使用默認(rèn)的mine-type
default_type text/html;
#設(shè)置默認(rèn)字符集
charset UTF-8;
#==設(shè)置nginx采用gzip壓縮的形式發(fā)送數(shù)據(jù),減少發(fā)送數(shù)據(jù)量挽荡,但會(huì)增加請(qǐng)求處理時(shí)間及CPU處理時(shí)間藐石,需要權(quán)衡
gzip on;
#==加vary給代理服務(wù)器使用,針對(duì)有的瀏覽器支持壓縮定拟,有個(gè)不支持于微,根據(jù)客戶端的HTTP頭來判斷是否需要壓縮
gzip_vary on;
#nginx在壓縮資源之前,先查找是否有預(yù)先gzip處理過的資源
#!gzip_static on;
#為指定的客戶端禁用gzip功能
gzip_disable "MSIE[1-6]\.";
#允許或禁止壓縮基于請(qǐng)求和相應(yīng)的響應(yīng)流青自,any代表壓縮所有請(qǐng)求
gzip_proxied any;
#==設(shè)置對(duì)數(shù)據(jù)啟用壓縮的最少字節(jié)數(shù)株依,如果請(qǐng)求小于10240字節(jié)則不壓縮,會(huì)影響請(qǐng)求速度
gzip_min_length 10240;
#==設(shè)置數(shù)據(jù)壓縮等級(jí)延窜,1-9之間恋腕,9最慢壓縮比最大
gzip_comp_level 2;
#設(shè)置需要壓縮的數(shù)據(jù)格式
gzip_types text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss;
#==開發(fā)緩存的同時(shí)也指定了緩存文件的最大數(shù)量,20s如果文件沒有請(qǐng)求則刪除緩存
open_file_cache max=100000 inactive=20s;
#==指多長(zhǎng)時(shí)間檢查一次緩存的有效信息
open_file_cache_valid 60s;
#==文件緩存最小的訪問次數(shù)逆瑞,只有訪問超過5次的才會(huì)被緩存
open_file_cache_min_uses 5;
#當(dāng)搜索一個(gè)文件時(shí)是否緩存錯(cuò)誤信息
open_file_cache_errors on;
#==允許客戶端請(qǐng)求的最大單文件字節(jié)數(shù)
client_max_body_size 8m;
#==沖區(qū)代理緩沖用戶端請(qǐng)求的最大字節(jié)數(shù)
client_header_buffer_size 32k;
#
proxy_redirect off;
#后端的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;
#==nginx跟后端服務(wù)器連接超時(shí)時(shí)間(代理連接超時(shí))
proxy_connect_timeout 60;
#==連接成功后荠藤,后端服務(wù)器響應(yīng)時(shí)間(代理接收超時(shí))
proxy_read_timeout 120;
#==后端服務(wù)器數(shù)據(jù)回傳時(shí)間(代理發(fā)送超時(shí))
proxy_send_timeout 20;
#==設(shè)置代理服務(wù)器(nginx)保存用戶頭信息的緩沖區(qū)大小
proxy_buffer_size 32k;
#==proxy_buffers緩沖區(qū)伙单,網(wǎng)頁平均在32k以下的設(shè)置
proxy_buffers 4 128k;
#==高負(fù)荷下緩沖大小(proxy_buffers*2)
proxy_busy_buffers_size 256k;
#==設(shè)定緩存文件夾大小哈肖,大于這個(gè)值吻育,將從upstream服務(wù)器傳
proxy_temp_file_write_size 256k;
#==1G內(nèi)存緩沖空間,3天不用刪除牡彻,最大磁盤緩沖空間2G
proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:1024m inactive=3d max_size=2g;
#設(shè)定負(fù)載均衡服務(wù)器列表
upstream nginx.test.com{
#后端服務(wù)器訪問規(guī)則
#ip_hash;
#weight參數(shù)表示權(quán)重值扫沼,權(quán)值越高被分配到的幾率越大
#server 10.11.12.116:80 weight=5;
#PC_Local
server 10.11.12.116:80;
#PC_Server
server 10.11.12.112:80;
#Notebook
#server 10.11.12.106:80;
}
#虛擬主機(jī)設(shè)定模塊(掛載多個(gè)站點(diǎn),只需要配置多個(gè)server及upstream節(jié)點(diǎn)即可)
server {
#監(jiān)聽80端口
listen 80;
#定義使用nginx.test.com訪問
server_name nginx.test.com;
#設(shè)定本虛擬主機(jī)的訪問日志
access_log logs/nginx.test.com.access.log;
#默認(rèn)請(qǐng)求
# 語法規(guī)則:location [=|~|~*|^~] /uri/ {...} 先匹配普通location庄吼,在匹配正則location
# = 開頭表示精確匹配
# ^~ 開頭表示uri以某個(gè)常規(guī)字符串開頭缎除,理解為匹配url路徑即可,無需考慮編解碼
# ~ 開頭表示區(qū)分大小寫的正則匹配
# ~* 開頭表示不區(qū)分大小寫的正則匹配
# !~ 開頭表示區(qū)分大小寫的不匹配的正則
# !~* 開頭表示不區(qū)分大小寫的不匹配的正則
# / 通用匹配总寻,任何請(qǐng)求都會(huì)被匹配到
location / {
#定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置
root html;
#定義首頁索引文件的名稱
index index.html index.htm;
#定義后端負(fù)載服務(wù)器組
proxy_pass http://nginx.test.com;
}
#定義錯(cuò)誤提示頁面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
#靜態(tài)文件器罐,nginx自己處理
location ~ ^/(images|javascript|js|css|flash|media|static)/{
root /var/www/virtual/htdocs;
#過期時(shí)間1天
expires 1d;
#關(guān)閉媒體文件日志
access_log off;
log_not_found off;
}
#設(shè)定查看Nginx狀態(tài)的地址
location /NginxStatus {
#!stub_status on; #無此關(guān)鍵字
access_log off;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd;
}
#禁止訪問的文件.htxxx
location ~ /\.ht {
deny all;
}
}
#網(wǎng)站較多的情況下ngxin又不會(huì)請(qǐng)求瓶頸可以考慮掛多個(gè)站點(diǎn),并把虛擬主機(jī)配置單獨(dú)放在一個(gè)文件內(nèi)渐行,引入進(jìn)來
#include website.conf;
}