Nginx的配置文件nginx.conf存放在nginx的安裝目錄的conf下,整個配置文件是以block的形式組織的。整個配置文件中Main命令位於最高層,在Main層下面能夠有Event、HTTP等級層,而在HTTP層中又包含server層,即server block,server block中又可分爲location層,而且一個server block中能夠包含多個location block。javascript
Nginx配置文件主要分紅四個部分:main(全局設置)、server(主機設置)、upstream(負載均衡設置)和location(URL匹配特定位置的設置)。main部分設置的命令將影響其餘全部設置;server部分的命令只要用於指定主機和端口;upstream命令主要敢於負載均衡,設置一系列的後端服務器;location部分用於匹配網頁位置。這死者之間的關係形式:server繼承main,location繼承server,upstream既不會繼承其餘設置也不會被繼承。php
下面這段是全局屬性配置
css
//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服務器相關屬性配置:html
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;
下面這段是虛擬主機的配置:java
//定義虛擬主機開始的關鍵字 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;