nginx配置文件詳解

   Nginx的配置文件nginx.conf存放在nginx的安裝目錄的conf下,整個配置文件是以block的形式組織的。整個配置文件中Main命令位於最高層,在Main層下面可以有Event、HTTP等級層,而在HTTP層中又包含server層,即server block,server block中又可分爲location層,並且一個server block中可以包含多個location block。

Nginx配置文件主要分成四個部分:main(全局設置)、server(主機設置)、upstream(負載均衡設置)和location(URL匹配特定位置的設置)。main部分設置的命令將影響其他所有設置;server部分的命令只要用於指定主機和端口;upstream命令主要勇於負載均衡,設置一系列的後端服務器;location部分用於匹配網頁位置。這死者之間的關係形式:server繼承main,location繼承server,upstream既不會繼承其他設置也不會被繼承。


下面這段是全局屬性配置

//user指定nginx的worker進程運行的用戶及用戶組,默認是nobody賬號運行
user nobody nobody;

//指定nginx開啓的進程數
worker_processes 2;

//定義全局日誌錯誤日誌文件,日誌輸出級別有debug、info、notice、warn、error、crit可供選擇
error_log /usr/local/nginx/logs/nginx_error.log crit;

//指定進程id的存儲文件位置
pid /usr/local/nginx/logs/nginx.pid;

//用於綁定worker進程和cpu,Linux內核2.4以上可用
worker_rlimit_nofile 51200;

//設定nginx的工作模式及連接上限
//use指定nginx的工作模式,nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll
//其中select和poll都是標準工作模式,kqueue和epoll是高效的工作模式,對於linux系統,epoll是首選
//worker_connections用於定義nginx每個進程的最大連接數,默認是1024。最大連接數由 worker_processes
//和worker_connections決定,即max_client=worker_processes*worker_connections
//進程的最大連接數受linux系統進程的最大打開文件數限制,在執行操作系統命令"ulimit -n 65536"
//後worker_connections的設置才能生效
events
{
    use epoll;
    worker_connections 6000;
}

下面這段是nginx對HTTP服務器相關屬性配置:

http
{
//include主模塊命令,實現對配置文件所包含文件的設定,可以減少配置文件的複雜度。類似於apache中的include方法
include mime.types;

//default_type屬於HTTP核心模塊命令,這裏設定默認的二進制流,也就是訪當文件類型未定義
//時使用這種方式,例如,在沒有配置php環境時,nginx是不予解析的,此時,用瀏覽器訪問
//php文件就是出現下載窗口
default_type application/octet-stream;

server_names_hash_bucket_size 3526;
server_names_hash_max_size 4096;

//log_format指定日誌輸出格式,combined_realip爲日誌輸出名稱
log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
'$host "$request_uri" $status' '"$http_referer" "$http_user_agent"';

//用於設定允許客戶端請求的最大的單個文件字節數
client_max_body_size 10m;

//用於指定客戶端請求頭的headerbuffer大小。對於大多數請求,1KB的緩衝區大小已經足夠,
//如果自定義了消息頭或有更大的cookie,可以增加緩衝區大小
client_header_buffer_size 1k;
client_body_buffer_size 256k;

//用於指定客戶端請求中較大的消息頭的緩存最大數量和大小,4位個數,128K大小,最大緩存
//爲4個128K
large_client_header_buffers 8 4k;

//用於開啓高效文件傳輸模式。將tcp_nopush和tcp_nodelay另個命令設置爲on用於放置網絡阻塞
sendfile on;
tcp_nopush on;
tcp_nodelay on;

//設置客戶端連接保持活動的超時時間。超過這個時間後,服務器會關閉該連接
keepalive_timeout 10;

//設置客戶端請求頭讀取超時時間,如果超過這個時間,客戶端還沒有發送任何數據,nginx
//將返回“Request time out(408)”錯誤
client_header_timeout 10;

//設置客戶端請求主題讀取超時時間,如果超過這個時間,客戶端還沒有發送任何數據,nginx
//將返回“Request time out(408)”錯誤,默認值是60
client_body_timeout 10;

//指定相應客戶端的超時時間,這個超時僅限於兩個連接活動之間的時間,如果超過這個時間,
//客戶端沒有任何活動,nginx將會關閉連接
send_timeout 10;

connection_pool_size 256;
request_pool_size 4k;
output_buffers 4 32k;
postpone_output 1460;
client_body_temp_path /usr/local/nginx/client_body_temp;
proxy_temp_path /usr/local/nginx/proxy_temp;
fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
fastcgi_intercept_errors on;

下面這段是HTTPGzip模塊在nginx配置中的相關屬性設置:

//用於設置開啓或者關閉gzip模塊
gzip on;

//設置允許壓縮的頁面最小字節數,頁面字節數從header頭的Content-Length中獲取。默認值
//是0,不管頁面多大都進行壓縮。建議設置成大於1KB的字節數,小於1KB可能會越壓縮越大
gzip_min_length 1k;

//表示申請4個單位16KB的內存作爲壓縮結果流緩存,默認申請是與原始數據大小相同的內存
//空間Kauai存儲gzip壓縮結果
gzip_buffers 4 16k;

//設置識別http協議版本,默認是1.1
gzip_http_version 1.1;

//指定壓縮比例,1表示壓縮比最小,處理速度最快,9表示壓縮比最大,傳輸速度最快,但處
//速度最慢,也比較消耗內存
gzip_comp_level 2;

//指定壓縮的類型,無論是否指定,“text/html”類型總會被壓縮的
gzip_types text/plain application/x-javascript text/css text/htm application/xml;

//讓前端的緩存服務器緩存經過gzip壓縮的頁面,例如用squid緩存經過的nginx壓縮的數量
gzip_vary on;

下面這段是虛擬主機的配置:

//定義虛擬主機開始的關鍵字
server
{
//指定虛擬主機的服務端口
listen 80;

//用於指定ip地址或者域名,多個域名之間用空格分開
server_name 192.168.8.10 

//設定訪問的默認首頁地址 
index index.html index.htm index.php index.jsp;

//指定虛擬主機的網頁根目錄,這個目錄可以是相對路徑,也可以是絕對路徑
root /usr/local/nginx/html/test;

//設置網頁的默認編碼格式
charset gb2313;

//指定虛擬主機的訪問日誌存放路徑,最後的main指定訪問日誌的輸出格式
access_log logs/www.test.com.log main;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章