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;