#普通配置
#==性能配置
#運(yùn)行用戶
user nobody;
#pid文件
pid logs/nginx.pid;
#==worker進(jìn)程數(shù),通常設(shè)置等同于CPU數(shù)量,auto為自動檢測
worker_processes auto;
#==worker進(jìn)程打開文件數(shù),可CPU*10000設(shè)置
worker_rlimit_nofile 100000;
#全局錯誤日志
error_log logs/error.log;
#events模塊中包含nginx中所有處理連接的設(shè)置
events {
#==worker進(jìn)程同時打開的連接數(shù),可CPU*2048設(shè)置
worker_connections 2048;
#==告訴nginx收到一個新鏈接通知后接受盡可能多的鏈接
multi_accept on;
#==設(shè)置用于復(fù)用客戶端線程的輪訓(xùn)方法
use epoll;
}
#http模塊控制著nginx http處理的所有核心特性
http {
#打開或關(guān)閉錯誤頁面中的nginx版本號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在一個數(shù)據(jù)包里發(fā)送所有頭文件,而不是一個接一個的發(fā)送
tcp_nopush on;
#==設(shè)置nginx不要緩存數(shù)據(jù),而是一段一段的發(fā)送,
#==當(dāng)需要及時發(fā)送數(shù)據(jù)時,就應(yīng)該給應(yīng)用設(shè)置這個屬性,這樣發(fā)送一小塊數(shù)據(jù)信息時就不能立即得到返回值
tcp_nodelay on;
#==設(shè)置nginx是否存儲訪問日志,關(guān)閉這個可以讓讀取磁盤IO操作更快
access_log on;
#設(shè)置nginx只記錄嚴(yán)重錯誤
#error_log logs/error.log crit;
#==給客戶端分配keep-alive鏈接超時時間
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,就是說允許每一個IP地址最多同時打開100個連接
limit_conn addr 100;
#include指在當(dāng)前文件中包含另一個文件內(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ù)量,但會增加請求處理時間及CPU處理時間,需要權(quán)衡
gzip on;
#==加vary給代理服務(wù)器使用,針對有的瀏覽器支持壓縮,有個不支持,根據(jù)客戶端的HTTP頭來判斷是否需要壓縮
gzip_vary on;
#nginx在壓縮資源之前,先查找是否有預(yù)先gzip處理過的資源
#!gzip_static on;
#為指定的客戶端禁用gzip功能
gzip_disable "MSIE[1-6].";
#允許或禁止壓縮基于請求和相應(yīng)的響應(yīng)流,any代表壓縮所有請求
gzip_proxied any;
#==設(shè)置對數(shù)據(jù)啟用壓縮的最少字節(jié)數(shù),如果請求小于10240字節(jié)則不壓縮,會影響請求速度
gzip_min_length 10240;
#==設(shè)置數(shù)據(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ù)量,20s如果文件沒有請求則刪除緩存
open_file_cache max=100000 inactive=20s;
#==指多長時間檢查一次緩存的有效信息
open_file_cache_valid 60s;
#==文件緩存最小的訪問次數(shù),只有訪問超過5次的才會被緩存
open_file_cache_min_uses 5;
#當(dāng)搜索一個文件時是否緩存錯誤信息
open_file_cache_errors on;
#==允許客戶端請求的單文件字節(jié)數(shù)
client_max_body_size 8m;
#==沖區(qū)代理緩沖用戶端請求的字節(jié)數(shù)
client_header_buffer_size 32k;
#
proxy_redirect off;
#后端的Web服務(wù)器可以通過X-Forwarded-For獲取用戶真實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ù)器連接超時時間(代理連接超時)
proxy_connect_timeout 60;
#==連接成功后,后端服務(wù)器響應(yīng)時間(代理接收超時)
proxy_read_timeout 120;
#==后端服務(wù)器數(shù)據(jù)回傳時間(代理發(fā)送超時)
proxy_send_timeout 20;
#==設(shè)置代理服務(wù)器(nginx)保存用戶頭信息的緩沖區(qū)大小
proxy_buffer_size 32k;
#==proxy_buffers緩沖區(qū),網(wǎng)頁平均在32k以下的設(shè)置
proxy_buffers 4 128k;
#==高負(fù)荷下緩沖大?。╬roxy_buffers*2)
proxy_busy_buffers_size 256k;
#==設(shè)定緩存文件夾大小,大于這個值,將從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è)定模塊(掛載多個站點,只需要配置多個server及upstream節(jié)點即可)
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)請求
# 語法規(guī)則:location [=|~|~*|^~] /uri/ {...} 先匹配普通location,在匹配正則location
# = 開頭表示精確匹配
# ^~ 開頭表示uri以某個常規(guī)字符串開頭,理解為匹配url路徑即可,無需考慮編解碼
# ~ 開頭表示區(qū)分大小寫的正則匹配
# ~* 開頭表示不區(qū)分大小寫的正則匹配
# !~ 開頭表示區(qū)分大小寫的不匹配的正則
# !~* 開頭表示不區(qū)分大小寫的不匹配的正則
# / 通用匹配,任何請求都會被匹配到
location / {
#定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置
root html;
#定義首頁索引文件的名稱
index index.html index.htm;
#定義后端負(fù)載服務(wù)器組
proxy_pass http://nginx.test.com;
}
#定義錯誤提示頁面
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;
#過期時間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又不會請求瓶頸可以考慮掛多個站點,并把虛擬主機(jī)配置單獨(dú)放在一個文件內(nèi),引入進(jìn)來
#include website.conf;
}