從這篇部落格開始,將對nginx的配置檔案nginx.conf的常用配置做詳細的解釋,並且以附件的形式給出實際的配置檔案內容。
shell** 收藏**
user nick excelsoft;
說明:以root賬號執行時,設定worker程序所屬的使用者/組。
shell** 收藏**
worker_processes 2;
說明:設定worker程序的數目,一般和cpu核心數一致,可設定為其2倍,以優化效能。
其他:檢視cpu核心數:cat /proc/cpuinfo | grep processor
如果為雙核,則顯示:
processor : 0
processor : 1
shell** 收藏**
error_log /opt/nginx/logs/error.log notice;
說明:指定錯誤日誌的路徑、級別,所有的級別包括debug、info、notice、warn、error、crit
shell** 收藏**
pid /opt/nginx/logs/nginx.pid;
說明:指定nginx啟動時的程序檔案。
其他:1. nginx啟動時,獲取該檔案的寫許可權,將當前程序(master process)的pid寫入到nginx.pid檔案。
2. 一旦nginx啟動,該檔案即成為可讀的,無法再次寫入,可以避免nginx的重複啟動。
3. nginx.pid的檔案內容是當前程序的pid,因此可以這樣關閉:
kill `cat /opt/nginx/logs/nginx.pid`
不需要檢視nginx的程序號:ps -ef | grep nginx
shell** 收藏**
worker_rlimit_nofile 65535;
說明:設定乙個nginx程序能夠開啟的最大檔案數。
其他:1. 預設情況下,nginx程序能夠開啟的檔案數受限於當前的作業系統。
2. 檢視系統的最大檔案數:當前的centos為1024。
ulimit -a
ulimit -n
shell** 收藏**
events {
use epoll;
worker_connections 65535;
說明:1. 設定網路io模型:
epoll:在linux核心2.6以上版本可用,檢視linux版本:cat /proc/version
和標準的select模式比較,處理時間更短,採用了類似於資料庫的索引機制,以空間換時間.
kqueue:適用於freebsd系統。
2. worker_connections:單個worker程序允許的最大併發連線數。
理論上,每台nginx伺服器的最大連線數為worker_processes * worker_connections,
但是nginx進行排程時,分配使用者請求給worker程序並不均勻,無法達到最大值。
shell** 收藏**
charset utf-8;
說明:http作用域,設定編碼格式,可不統一設定。
shell** 收藏**
說明:http作用域.
1. 該日誌格式定義為access名稱。
2. 日誌格式:原有選項
$remote_user:客戶端使用者名稱。
$time_local:客戶端進行訪問時的本地時間。 [21/jun/2014:23:35:19 +0800]
$request:請求方式、路徑、協議。 [get /html/ http/1.1]
$status:請求狀態碼,成功為200。
$body_bytes_sent:傳送給客戶端的檔案主體大小。 [49]
$http_user_agent:客戶端瀏覽器。
3. 日誌格式:追加選項
$sent_http_content_type:響應的內容型別。 [text/html; charset=utf-8]
$request_time:處理使用者請求的時間,包括接收請求、返回響應的時間。 [0.000]
shell** 收藏**
access_log /opt/nginx/logs/access.log access;
說明:http作用域,指定日誌檔案的位置。
shell** 收藏**
sendfile on;
說明:http作用域,是否開啟linux系統的零拷貝(zero copy)功能,針對普通的應用設為on。
shell** 收藏**
tcp_nopush on;
說明:http作用域,預設為off,將小的資料報組裝傳送,避免大量資料報導致的網路擁塞。
shell** 收藏**
tcp_nodelay on;
說明:http作用域,設定響應無延遲,預設為on. 高版本的linux系統允許和tcp_nopush同時使用。
shell** 收藏**
keepalive_timeout 65;
說明:http作用域,設定連線超時時間為65s
1. 如果有大量顯示、大檔案上傳等,設定地調整為乙個較大值。
2. 不能設定的太大,避免惡意的連線占用。
shell** 收藏**
gzip on;
說明:http作用域,開啟gzip壓縮功能。
1. 在服務端對響應內容進行壓縮,客戶端的瀏覽器具有gzip解壓縮能力。
2. 壓縮比率高達30%以上,有效節省傳輸頻寬。
shell** 收藏**
gzip_min_length 1k;
說明:頁面內容大於1k時才進行壓縮,避免內容過少導致的越壓越大現象。
shell** 收藏**
gzip_buffers 8 32k;
說明:壓縮時需要的緩衝區大小,避免大檔案的丟失. 一共8塊、每塊32k。
shell** 收藏**
說明:預設為http/1.1協議,早期的瀏覽器可能不支援gzip功能。
shell** 收藏**
gzip_comp_level 3;
說明:設定壓縮比率,範圍為1-9,不宜設定的過大、以避免影響了cpu的效能。
shell** 收藏**
說明:進行壓縮的檔案型別
1. gzip缺省會對text/html進行壓縮,因此不用指定。
shell** 收藏**
gzip_vary on;
說明:根據http響應頭判斷瀏覽器是否支援gzip壓縮,不支援即不壓縮。
使用火狐檢視:
響應頭:vary: accept-encoding
請求頭:accept-encoding gzip, deflate
shell** 收藏**
server_names_hash_bucket_size 128;
說明:後端伺服器名字的雜湊儲存大小,如果伺服器很多,可以適當調大一點。
shell** 收藏**
client_header_buffer_size 32k;
說明:說明:nginx預設使用該大小的buffer來讀取header值。
shell** 收藏**
large_client_header_buffers 4 32k;
說明:如果header過大,使用該buffer來讀取header。
shell** 收藏**
client_max_body_size 100m;
說明:客戶端能夠上傳的最大檔案大小。
shell** 收藏**
client_body_buffer_size 128k;
說明:處理客戶端請求(通過post傳送的資料、檔案上傳)的buffer大小,
如果超過此大小限制,則全部或部分儲存到乙個臨時檔案。
啟動、關閉:su - root
檢查配置檔案是否修改正確:
shell** 收藏**
/usr/local/nginx/sbin/nginx -t
平滑啟動:
shell** 收藏**
kill -hup `cat /opt/nginx/logs/nginx.pid`
深入淺出Nginx
前言 nginx是一款輕量級的web伺服器 反向 伺服器,由於它的記憶體占用少,啟動極快,高併發能力強,在網際網路專案中廣泛應用。架構圖上圖基本上說明了當下流行的技術架構,其中nginx有點入口閘道器的味道。反向 伺服器?經常聽人說到一些術語,如反向 那麼什麼是反向 什麼又是正向 呢?正向 正向 示...
深入淺出Nginx
前言 nginx是一款輕量級的web伺服器 反向 伺服器,由於它的記憶體占用少,啟動極快,高併發能力強,在網際網路專案中廣泛應用。架構圖上圖基本上說明了當下流行的技術架構,其中nginx有點入口閘道器的味道。反向 伺服器?經常聽人說到一些術語,如反向 那麼什麼是反向 什麼又是正向 呢?正向 正向 示...
深入淺出nginx
什麼是nginx?nginx 是乙個高效能的http和反向 web伺服器,同時也提供了imap pop3 smtp服務。說到nginx,那自然會聯想到反向 那麼什麼是反向 呢?既然有反向 那肯定也有正向 正向 又是什麼呢?什麼是正向 正向 意思是乙個位於客戶端和原始伺服器 origin server...