Nginx 編譯及 conf 優化設定

2015-04-06 CentOS

由於今天剛好把 Nginx 重新安裝,將採用 compile 的方式來安裝,並且將其設定檔都最佳化

編譯是速度最快的,且版本也可以用最新的 source,未來要升級或移除也很方便。

 

 

先介紹環境及版本

OS 採用 CentOS 6.6,則 Nginx 是使用目前最新的 1.7.11

 

需求

  1. 採用 poll 模式
  2. HTTPS
  3. 支援 dav
  4. 使用 gzip 壓縮

 

 

編譯 Nginx

step1. 準備編譯要用的套件

$ yum install make make-devel gcc zlib zlib-devel openssl openssl-devel pcre pcre-devel

 

 

step2. 下載並解壓縮

$ wget http://nginx.org/download/nginx-1.7.11.tar.gz
$ tar zxvf nginx-1.7.11.tar.gz

 

step3. 準備 configure 參數

必須注意與 Apache 不同的是,Nginx 編譯的模組都是靜態的,所以必須在一開始先把需要的都載入

$ cd nginx-1.7.11
$ ./configure --with-poll_module --with-threads --with-http_ssl_module --with-http_dav_module --with-http_gzip_static_module
$ make && make install

 

step4. nginx.conf 最佳設定

若是未指定 –prefix 預設會裝到 /usr/local/nginx,在這邊僅針對最佳化參數設定調整

 

/usr/local/nginx/conf/nginx.conf

worker_processes 4; 進程數,依 cpu core 指定
worker_cpu_affinity 1000 0100 0010 0001; 分配進程到 4core cpu
worker_rlimit_nofile 1024; 每個進程可開啟的描述符號
events {
      use epoll; 開啟 poll 模式,這是重點
      worker_connections 1024; 連線數,按照需求開啟,避免造成不必要的資源浪費
}

http {
    keepalive_timeout 60; keepalive 時間,60秒算是正常數值
    gzip on; 開啟 gzip 壓縮
    gzip_buffers 4 4k; gzip可用的記憶體比例
    gzip_comp_level 2; 1~9越小壓縮比越高,但CPU Loading也越重
    gzip_min_length 1k; 允許壓縮頁面最小位元,至少小於1k避免越壓越大
    gzip_http_version 1.1; 指定 HTTP1.1 才使用gzip壓縮,避免較舊的瀏覽器不支援
    gzip_types text/plain application/x-javascript text/css application/xml;
}

 

 

step5. virtual.conf 最佳化設定

在 server conf 這邊會盡量讓設定簡單化,但會加入一些靜態檔案的 cache,如圖檔、css

server {
      location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
      expires 30d;
      access_log off;
      }
}

讓靜態檔案在瀏覽器 cache 30天,並且不記錄到 access.log 降低 IO

 

 

 

 

 

 

參考:

nginx.conf 參數

nginx.conf Example

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱