Nginx-配置一

參考:http://ixdba.blog.51cto.com/2895551/790611
並加上自己的理解.以實際配置的形式來講解.
把main,events主配置放到/etc/nginx/nginx.conf主配置文件中,
把http,server,location,upstream等配置單獨出來.

main events配置

/etc/nginx/nginx.conf

user nginx;
#user是個主模塊指令,指定nginx worker進程運行用戶及用戶組,默認則nobody賬號運行.
worker_processes 1;
#worker_processes是個主模塊指令,指定了nginx要開啓的進程數,每個nginx進程平均耗費10-12M內存.根據經驗,指定1個就夠了.如果
是多核CPU,可指定和CPU核數相同的進程數.


#error_log /var/log/nginx/error.log warn;
error_log /var/log/nginx/error.log debug;
#用來定義全局錯誤日誌,日誌輸出級別有debug,info,notice,warn,error,crit可供選擇,其中,debug輸出日誌最爲詳細.而crit輸出日
志最少.
pid /var/run/nginx.pid;
#是模擬指令,用來指定進程ID的存儲位置.

worker_rlimit_nofile 65535;
#用於指定一個進程可以打開的最多文件數目,這裏是65535,需要使用命令ulimit -n 65535來設置.

events {
#events指令是設定nginx的工作模式及連接上限.
use epoll;
#use是個事件模塊指令,用來指定nginx的工作模式,有select,poll(這兩個是標準模式),kqueue,epoll(這兩個是高效模式,epoll用在linux平臺上,而kqueue用在BSD系統中),rtsig,/dev/poll
worker_connections 1024;
#也是個事件指令,用於定義nginx每個進程的最大連接數,默認是1024.最大客戶端連接數由worker_processesworker_connections決定
,即Max_client=worker_processes*worker_connections,在作爲反向代理時,max_clients變爲:max_clients = worker_processes * worker_connections/4。進程的最大連接數受Linux系統進程的最大打開文件數限制,在執行操作系統命令“ulimit -n 65536”後worker_connectio設置才能生效。

}
include /etc/nginx/http.conf;
#載入httpd.conf文件

下面是http的設置.

vi /etc/nginx/http.conf

http {
#fastcgi_intercept_errors on;
#有些地方說這裏要開啓錯誤頁面的重定義,error_page 403 404 /40x.html;纔會生效.

include /etc/nginx/mime.types;
#實現對對配置文件所包含的文件的設定,可以減少主配置文件的複雜度.
default_type application/octet-stream;
#default_type屬於HTTP核心模塊指令,這裏設定默認類型爲二進制流,也就是當文件類型未定義時使用這種方式,例如在沒有配置PHP環境時,Nginx是不予解析的,此時,用瀏覽器訪問PHP文件就會出現下載窗口。


##########access log setup#######

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

log_format download '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_range" "$sent_http_content_range"';

#$remote_addr$http_x_forwarded_for用以記錄客戶端的ip地址;
#$remote_user:用來記錄客戶端用戶名稱;
#$time_local: 用來記錄訪問時間與時區;
#}$request: 用來記錄請求的urlhttp協議;
#$status: 用來記錄請求狀態;成功是200
#$body_bytes_s ent :記錄發送給客戶端文件主體內容大小;
#$http_referer:用來記錄從那個頁面鏈接訪問過來的;
#$http_user_agent:記錄客戶毒啊瀏覽器的相關信息;
#通常web服務器放在反向代理的後面,這樣就不能獲取到客戶的IP地址了,通過$remote_add拿到的IP地址是反向代理#服務器的iP地址。反向代理服務器在轉發請求的http頭信息中,可以增加x_forwarded_for信息,用以記錄原有客戶端#的IP地址和原來客戶端的請求的服務器地址;
#log_format是Nginx的HttpLog模塊指令,用於指定Nginx日誌的輸出格式。main爲此日誌輸出格式的名稱,可以在下面的access_log指令中引用。
#log_format是Nginx的HttpLog模塊指令,用於指定Nginx日誌的輸出格式。main爲此日誌輸出格式的名稱,可以在下面的access_log指令中引用。

access_log /var/log/nginx/access.log main;

#################################

######################緩衝設置##################

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

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

client_max_body_size 20m;
#client_max_body_size用來設置允許客戶端請求的最大的單個文件字節數。

client_header_buffer_size 32K;
#client_header_buffer_size用於指定來自客戶端請求頭的headerbuffer大小。對於大多數請求,1K的緩衝區大小已經足夠,如果自定義了消息頭或有更大的Cookie,可以增加緩衝區大小。這裏設置爲32K。

large_client_header_buffers 4 128k;
#large_client_header_buffers用來指定客戶端請求中較大的消息頭的緩存最大數量和大小, “4”爲個數,“128K”爲大小,最大緩存量爲4個128K.

open_file_cache max=65535 inactive=60s;
#這個將爲打開文件指定緩存,默認是沒有啓用的,max指定緩存數量,建議和打開文件數一致,inactive是指經過多長時間文件沒被請求後刪除緩存。
open_file_cache_valid 80s;
#這個是指多長時間檢查一次緩存的有效信息.
#open_file_cache_min_users 1;
#open_file_cache指令中的inactive參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打開的,如上例,如果有一個文件在inactive時間內一次沒被使用,它將被移除。

#####################################################

#############設置連接超時時間########################

sendfile on;
tcp_nopush on;
tcp_nodelay on;
#sendfile參數用於開啓高效文件傳輸模式。將tcp_nopush和tcp_nodelay兩個指令設置爲on用於防止網絡阻塞。
keepalive_timeout 65;
#keepalive_timeout設置客戶端連接保持活動的超時時間。在超過這個時間之後,服務器會關閉該連接。
send_timeout 10;
#send_timeout指定響應客戶端的超時時間。這個超時僅限於兩個連接活動之間的時間,如果超過這個時間,客戶端沒有任何活動,Nginx將會關閉連接。

#####################################################

#######################gzip setup######
#HttpGzip模塊配置。這個模塊支持在線實時壓縮輸出數據流。要查看是否安裝了此模塊,需要使用nginx -V命令查看

gzip on;
#gzip用於設置開啓或者關閉gzip模塊,“gzip on”表示開啓GZIP壓縮,實時壓縮輸出數據流。
gzip_min_length 1k;
#gzip_min_length設置允許壓縮的頁面最小字節數,頁面字節數從header頭的Content-Length中獲取。默認值是0,不管頁面多大都進行壓縮。建議設置成大於1K的字節數,小於1K可能會越壓越大。
gzip_buffers 4 16k;
#gzip_buffers表示申請4個單位爲16K的內存作爲壓縮結果流緩存,默認值是申請與原始數據大小相同的內存空間來存儲gzip壓縮結果。
gzip_http_version 1.1;
#gzip_http_version用於設置識別HTTP協議版本,默認是1.1,目前大部分瀏覽器已經支持GZIP解壓,使用默認即可。
gzip_comp_level 2;
#gzip_comp_level用來指定GZIP壓縮比,1 壓縮比最小,處理速度最快;9 壓縮比最大,傳輸速度快,但處理最慢,也比較消耗cpu資源。
gzip_types text/plain application/x-javascript text/css application/xml;
#gzip_types用來指定壓縮的類型,無論是否指定,“text/html”類型總是會被壓縮的。
gzip_vary on;
#gzip_vary選項可以讓前端的緩存服務器緩存經過GZIP壓縮的頁面,例如用Squid緩存經過Nginx壓縮的數據。

##########################################

###################載入server配置文件##################
include /etc/nginx/conf.d/www.a.com.conf;
#這裏指定一個host.conf文件來配置虛擬主機,便於維護
#####################################################
}

server配置

這裏的配置比較多,見下一節.http://bfe99.blog.51cto.com/blog/1072496/1122911

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