由於今天剛好把 Nginx 重新安裝,將採用 compile 的方式來安裝,並且將其設定檔都最佳化
編譯是速度最快的,且版本也可以用最新的 source,未來要升級或移除也很方便。
先介紹環境及版本
OS 採用 CentOS 6.6,則 Nginx 是使用目前最新的 1.7.11
需求
- 採用 poll 模式
- HTTPS
- 支援 dav
- 使用 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
參考: