#改成特殊的用戶和組 user nginx nginx; #初始可設置爲CPU總核數 worker_processes 8; #cpu親和力配置,讓不一樣的進程使用不一樣的cpu worker_cpu_affinity 00010010 01001000 00010010 01001000; #全局錯誤日誌定義類型,[ debug|info|notice|warn|error|crit],必定要設置warn級別以上 error_log logs/error.log error; #把進程號記錄到文件,用於管理nginx進程 pid logs/nginx.pid; #Nginxworker最大打開文件數,可設置爲系統優化後的ulimit -HSn的結果 worker_rlimit_nofile 65535; # IO事件模型與worker進程鏈接數設置 events { #epoll模型是Linux 2.6以上版本內核中的高性能網絡I/O模型 use epoll; #單個worker進程最大鏈接數,nginx最大鏈接數=worker鏈接數*worker進程數 worker_connections 10240; } #http模塊設置部分 http { #隱藏響應header和錯誤通知中的版本號 server_tokens off; #文件擴展名與文件類型映射表 include mime.types; #默認文件類型 default_type application/octet-stream; #服務域名的最大hash表大小 server_names_hash_max_size 512; #服務域名的hash表大小 server_names_hash_bucket_size 128; #開啓高效文件傳輸模式,實現內核零拷貝 sendfile on; #激活tcp_nopush參數能夠容許把httpresponse header和文件的開始放在一個文件裏發佈,積極的做用是減小網絡報文段的數量 tcp_nopush on; #激活tcp_nodelay,內核會等待將更多的字節組成一個數據包,從而提升I/O性能 tcp_nodelay on; #鏈接超時時間,單位是秒 keepalive_timeout 120; #目錄列表訪問參數,合適http下載,默認關閉。 autoindex off; #讀取客戶端請求頭的超時時間 client_header_timeout 15s; #讀取客戶端請求主體的超時時間 client_body_timeout 60s; #設定讀取客戶端請求主體的最大大小。 client_max_body_size 8m; #設置服務器端傳送http響應信息到客戶端的超時時間 send_timeout 60s; #設定訪問日誌的日誌記錄格式,每列細節參考 log_format main '$remote_addr - $remote_user$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"$http_x_forwarded_for"'; #FastCGI參數是和動態服務器交互起做用的參數 #設定Nginx服務器和後端FastCGI服務器鏈接的超時時間 fastcgi_connect_timeout 60; #設定Nginx容許FastCGI服務端返回數據的超時時間 fastcgi_send_timeout 60; #設定Nginx從FastCGI服務端讀取響應信息的超時時間 fastcgi_read_timeout 60; #設定用來讀取從FastCGI服務端收到的第一部分響應信息的緩衝區大小 fastcgi_buffer_size 64k; #設定用來讀取從FastCGI服務端收到的響應信息的緩衝區大小以及緩衝區數量 fastcgi_buffers 4 64k; #設定系統很忙時可使用的fastcgi_buffers大小,推薦大小爲fastcgi_buffers *2。 fastcgi_busy_buffers_size 128k; #fastcti臨時文件的大小,可設置128-256K fastcgi_temp_file_write_size 128k; #gzip壓縮模塊部分(此部分對於網站優化極其重要) #開啓gzip壓縮功能。 gzip on; #設置容許壓縮的頁面最小字節數,頁面字節數從header頭的Content-Length中獲取。默認值是0,表示無論頁面多大都進行壓縮。建議設置成大於1K。若是小於1K可能會越壓越大。 gzip_min_length 1k; #壓縮緩衝區大小。表示申請4個單位爲16K的內存做爲壓縮結果流緩存,默認值是申請與原始數據大小相同的內存空間來存儲gzip壓縮結果。 gzip_buffers 4 16k; #壓縮版本(默認1.1,前端爲squid2.5時使用1.0)用於設置識別HTTP協議版本,默認是1.1,目前大部分瀏覽器已經支持GZIP解壓,使用默認便可。 gzip_http_version 1.1; #壓縮比率。用來指定GZIP壓縮比,1壓縮比最小,處理速度最快;9壓縮比最大,傳輸速度快,但處理最慢,也比較消耗cpu資源。 gzip_comp_level 2; #用來指定壓縮的類型,「text/html」類型老是會被壓縮,這個就是HTTP原理部分講的媒體類型。 gzip_typestext/plain application/x-javascript text/css application/xml; #vary header支持。該選項可讓前端的緩存服務器緩存通過GZIP壓縮的頁面,例如用Squid緩存通過Nginx壓縮的數據。 gzip_vary on; #反向代理負載均衡設定部分 #upstream表示負載服務器池,定義名字爲www.nginx.com的服務器池 upstream www.baidu.com.com { #server是服務器節點起始標籤,其後是節點地址,可爲域名或IP,weight是權重,能夠根據機器配置定義權重。weigth參數表示權值,權值越高被分配到的概率越大。 #調度算法,默認是rr輪詢。 ip_hash; server 172.16.1.7:80 weight=1; server 172.16.1.8:80 weight=1; server 172.16.1.9:80 weight=1 backup;#backup表示熱備 } #設定基於域名的虛擬主機部分 server { #監聽的端口,也能夠是172.16.1.7:80形式 listen 80; #域名 server_name www.nginx.com; #站點根目錄,即網站程序放的目錄 root html/blog; #默認訪問的location標籤段 location / { #首頁排序 index index.php index.html index.htm; } #符合php擴展名的請求調度到fcgi server location ~.*.(php|php5)?$ { #拋給本機的9000端口(php fastcgi server) fastcgi_pass 127.0.0.1:9000; #設定動態首頁 fastcgi_index index.php; #設定和fastcgi交互的相關參數包含文件 include fastcgi.conf; } #將符合靜態文件的圖片視頻流媒體等設定expries緩存參數,要求瀏覽器緩存。 location~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { #客戶端緩存上述靜態數據10年 expires 10y; } #將符合js,css文件的等設定expries緩存參數,要求瀏覽器緩存。 location~ .*\.(js|css)?$ { #客戶端緩存上述js,css數據30天 expires 30d; } #根據日誌格式記錄用戶訪問的日誌 access_log /app/logs/www_access.log main; } #反向代理負載均衡配置(代理www.nginx.com服務) server { #監聽的端口,也能夠是172.16.1.7:80形式 listen 80; #代理的服務域名 server_name location / { #將訪問www.nginx.com的全部請求都發送到upstream定義的服務器節點池。 proxy_pass #在代理向後端服務器發送的http請求頭中加入host字段信息,用於當後端服務器配置有多個虛擬主機時,能夠識別代理的是哪一個虛擬主機。這是節點服務器多虛擬主機時的關鍵配置。 proxy_set_headerHost $host; #在代理向後端服務器發送的http請求頭中加入X-Forwarded-For字段信息,用於後端服務器程序、日誌等接收記錄真實用戶的IP,而不是代理服務器的IP。 proxy_set_header X-Forwarded-For$remote_addr; #設定反向代理與後端節點服務器鏈接的超時時間,即發起握手等候響應的超時時間。 proxy_connect_timeout60; #設定代理後端服務器的數據回傳時間 proxy_send_timeout 60; #設定Nginx從代理的後端服務器獲取信息的時間 proxy_read_timeout 60; #設定緩衝區的大小 proxy_buffer_size 4k; #設定緩衝區的數量和大小。nginx從代理的後端服務器獲取的響應信息,會放置到緩衝區。 proxy_buffers 4 32k; #設定系統很忙時可使用的proxy_buffers大小 proxy_busy_buffers_size 64k; #設定proxy緩存臨時文件的大小 proxy_temp_file_write_size 64k; } #反向代理若是併發大,務必要關閉日誌,不然IO吃緊。 access_log off; } #設定查看Nginx狀態的地址 location /status { #開啓狀態功能 stub_status on; #關閉記錄日誌 access_log off; #設置基本認證提示 auth_basic 「nginx Server Status」; #校驗密碼文件 auth_basic_user_file conf/htpasswd; } #設定java程序動靜分離反向代理負載均衡配置 server { #監聽的端口,也能夠是172.16.1.7:80形式 listen 80; #代理的域名 server_name #程序目錄 root html/bbs; index index.php index.html index.htm; #全部靜態文件由nginx服務處理 location ~.*.(htm|html|gif|jpg|jpeg|png|swf|flv)$ { expires 3650d; } location ~ .*.(js|css)?$ { expires 30d; } #全部java相關擴展名均交由tomcat或resin服務處理。 location ~ .(jsp|jspx|do)?$ { #將訪問www.nginx.com的全部請求都發送到upstream定義的服務器節點池。 proxy_pass #在代理向後端服務器發送的http請求頭中加入host字段信息,用於當後端服務器配置有多個虛擬主機時,能夠識別代理的是哪一個虛擬主機。這是節點服務器多虛擬主機時的關鍵配置。 proxy_set_header Host $host; #在代理向後端服務器發送的http請求頭中加入X-Forwarded-For字段信息,用於後端服務器程序、日誌等接收記錄真實用戶的IP,而不是代理服務器的IP。 proxy_set_headerX-Forwarded-For $remote_addr; } access_log /app/logs/nginx_access.log main; #記錄日誌 } }