nginx配置詳解


      一 nginx的全局配置


#定義Nginx運行的用戶和用戶組

user www www;


#nginx進程數,建議設置爲等於CPU總核心數。

worker_processes 8;


#全局錯誤日誌定義類型,[ debug | info | notice | warn | error | crit ]

error_log /var/log/nginx/error.log info;


#進程文件

pid /var/run/nginx.pid;


#一個nginx進程打開的最多文件描述符數目,理論值應該是最多打開文件數(系統的值ulimit -n)與nginx進程數相除,但是nginx分配請求並不均勻,所以建議與ulimit -n的值保持一致。

worker_rlimit_nofile 65535;


#工作模式與連接數上限

events

{

#參考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本內核中的高性能網絡I/O模型,如果跑在FreeBSD上面,就用kqueue模型。linux系統,epoll工作模式是首選

use epoll;


#use 十個事件模塊指令,用來指定nginx的工作模式


#單個進程最大連接數(最大連接數=連接數*進程數)默認是1024,最大客戶端鏈接數由

worker_processes和worker_connections決定,即

max_client=worker_processes*worker_connections,在做反向代理時變爲:

max_client=worker_processes*worker_connections/4


worker_connections 65535;

}





                二,http服務器配置

http

{

include mime.types; #include是個主模塊指令,實現對配置文件的設定,可以減少主配置文件的複雜度,類似於Apache中的include方法


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


#charset utf-8; #默認編碼


server_names_hash_bucket_size 128; #


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


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


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


sendfile on; #開啓高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數來輸

出文件,對於普通應用設爲 on,如果用來進行下載等應用磁盤IO重負載應用,可設置爲off

,以平衡磁盤與網絡I/O處理速度,降低系統的負載。注意:如果圖片顯示不正常把這個改成off。


autoindex on; #開啓目錄列表訪問,合適下載服務器,默認關閉。


tcp_nopush on; #防止網絡阻塞


tcp_nodelay on; #防止網絡阻塞


keepalive_timeout 120; #用於設置客戶端鏈接保持活動的超時時間,在超過這個時間之後,服務器會關閉鏈接




#FastCGI相關參數是爲了改善網站的性能:減少資源佔用,提高訪問速度。下面參數看字面意思都能理解。


fastcgi_connect_timeout 300;


fastcgi_send_timeout 300;


fastcgi_read_timeout 300;


fastcgi_buffer_size 64k;


fastcgi_buffers 4 64k;


fastcgi_busy_buffers_size 128k;


fastcgi_temp_file_write_size 128k;




             三 gzip模塊配置


gzip on; #開啓gzip壓縮輸出


gzip_min_length 1k; #用於是指允許砸鎖的頁面最小字節數,頁面字節數從header頭的content-length中獲取,默認是0,不管餓面多大都進行壓縮,,建議設置成大於1K的字節數,小於1K可能會越壓越大,


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


gzip_http_version 1.0; #壓縮版本(默認1.1,前端如果是squid2.5請使用1.0)


gzip_comp_level 2; #用來指定gzip壓縮比,1壓縮比最下,處理速度最快,9壓縮比最大,傳輸速度快,但處理最慢,也比較小號cpu資源


gzip_types text/plain application/x-javascript text/css application/xml;


#壓縮類型,默認就已經包含text/html,所以下面就不用再寫了,寫上去也不會有問題,但

是會有一個warn。


gzip_vary on;可以讓前段的緩存服務器緩存經過gzip壓縮的頁面,例如,用squid緩存經過nginx壓縮的數據


#limit_zone crawler $binary_remote_addr 10m; #開啓限制IP連接數的時候需要使用




           四 負載均衡配置


upstream blog.ha97.com {


#upstream的負載均衡,weight是權重,可以根據機器配置定義權重。weigth參數表示權值,

權值越高被分配到的機率越大。


server 192.168.80.121:80 weight=3;


server 192.168.80.122:80 weight=2;


server 192.168.80.123:80 weight=3;


}




          五,虛擬主機的配置

http {

server{


#監聽端口


listen 80;


#域名可以有多個,用空格隔開


server_name www.ha97.com 192.168.1.12;


index index.html index.htm index.php;


root /data/www/ha97;


location ~ .*\.(php|php5)?$


{


fastcgi_pass 127.0.0.1:9000;


fastcgi_index index.php;


include fastcgi.conf;


}


#圖片緩存時間設置


location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$


{


expires 10d;


}


#JS和CSS緩存時間設置


location ~ .*\.(js|css)?$


{


expires 1h;


}


#日誌格式設定


log_format access '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '


'"$http_user_agent" $http_x_forwarded_for';


#定義本虛擬主機的訪問日誌


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




#對 "/" 啓用反向代理


location / {


proxy_pass http://127.0.0.1:88;


proxy_redirect off;


proxy_set_header Host $host;


proxy_set_header X-Real-IP $remote_addr;


#後端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP


proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


#以下是一些反向代理的配置,可選。


client_max_body_size 10m; #允許客戶端請求的最大單文件字節數


client_body_buffer_size 128k; #緩衝區代理緩衝用戶端請求的最大字節數,


proxy_connect_timeout 90; #nginx跟後端服務器連接超時時間(代理連接超時)


proxy_send_timeout 90; #後端服務器數據回傳時間(代理髮送超時)


proxy_read_timeout 90; #連接成功後,後端服務器響應時間(代理接收超時)


proxy_buffer_size 4k; #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小


proxy_buffers 4 32k; #proxy_buffers緩衝區,網頁平均在32k以下的設置


proxy_busy_buffers_size 64k; #高負荷下緩衝大小(proxy_buffers*2)


proxy_temp_file_write_size 64k;


#設定緩存文件夾大小,大於這個值,將從upstream服務器傳


}




#設定查看Nginx狀態的地址


location /NginxStatus {



stub_status on;


access_log on;


auth_basic "NginxStatus";


auth_basic_user_file conf/htpasswd;


#htpasswd文件的內容可以用apache提供的htpasswd工具來產生。



}



#本地動靜分離反向代理配置


#所有jsp的頁面均交由tomcat或resin處理


location ~ .(jsp|jspx|do)?$ {


proxy_set_header Host $host;


proxy_set_header X-Real-IP $remote_addr;


proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


proxy_pass http://127.0.0.1:8080;


}


#所有靜態文件由nginx直接讀取不經過tomcat或resin


location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|

ppt|pdf|xls|mp3|wma)$


{ expires 15d; }


location ~ .*.(js|css)?$


{ expires 1h; }


}






}


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