1. 程式人生 > >Nginx的知識分享,技術分享

Nginx的知識分享,技術分享

ptime usr 配置 cal 工作模式 getconf 使用 pes 理論值

  3. Nginx常用命令管理及升級

  查看nginx進程

  ps -ef|grep nginx

  說明:nginx的進程由主進程和工作進程組成。

  啟動nginx

  nginx

  啟動結果顯示nginx的主線程和工作線程,工作線程的數量跟nginx.conf中的配置參數worker_processes有關。

  平滑啟動nginx

  kill -HUP `cat /var/run/nginx.pid`

  或者

  nginx -s reload

  其中進程文件路徑在配置文件nginx.conf中可以找到。

  平滑啟動的意思是在不停止nginx的情況下,重啟nginx,重新加載配置文件,啟動新的工作線程,完美停止舊的工作線程。

  完美停止nginx

  kill -QUIT `cat /var/run/nginx.pid`

  快速停止nginx

  kill -TERM `cat /var/run/nginx.pid`

  或者

  kill -INT `cat /var/run/nginx.pid`

  完美停止工作進程(主要用於平滑升級)

  kill -WINCH `cat /var/run/nginx.pid`

  強制停止nginx

  pkill -9 nginx

  檢查對nginx.conf文件的修改是否正確

  nginx -t -c /etc/nginx/nginx.conf 或者 nginx -t

  停止nginx的命令

  nginx -s stop或者pkill nginx

  查看nginx的版本信息

  nginx -v

  查看完整的nginx的配置信息

  nginx -V

  Nginx升級方法:

  下載所需版本的Nginx

  wget http://www.nginx.org/download/nginx-1.4.2.tar.gz

  獲取舊版本nginx的configure選項

  /usr/local/nginx/sbin/nginx -V

  編譯新版本的nginx

  tar -xvf nginx-1.4.2.tar.gz

  cd nginx-1.4.2

  ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module

  make

  備份舊版本的nginx可執行文件,復制新版本的nginx這行文件

  mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

  cp objs/nginx /usr/local/nginx/sbin/

  測試新版本nginx是否正常

  /usr/local/nginx/sbin/nginx -t

  平滑重啟升級nginx

  kill –USR2 `cat /usr/local/nginx/log/nginx.pid`

  舊版本Nginx的pid變為oldbin,這是舊版本和新版本的nginx同時運行,過一段時間等就nginx處理完用戶請求後,執行下面操作

  從容關閉舊版本的Nginx進程

  kill -WINCH `cat /usr/local/nginx/log/nginx.oldbin`

  決定是否升級到新版的nginx

  kill –HUP `cat /usr/local/nginx/log/nginx.oldbin` ##nginx在不重載配置文件啟動工作進程

  kill –QUIT `cat /usr/local/nginx/log/nginx.oldbin` ##關閉舊版nginx

  驗證nginx是否升級成功

  /usr/local/nginx/sbin/nginx –V ###

  4. Nginx配置文件精講一

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

  user www www;

  #啟動進程,通常設置成和cpu的數量相等

  worker_processes 8;

  worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

  #為每個進程分配cpu,上例中將8個進程分配到8個cpu,當然可以寫多個,或者將一個進程分配到多個cpu。

  worker_rlimit_nofile 102400;

  #這個指令是指當一個nginx進程打開的最多文件描述符數目,理論值應該是最多打

  #開文件數(ulimit -n)與nginx進程數相除,但是nginx分配請求並不是那麽均勻

  #,所以最好與ulimit -n的值保持一致。

  #全局錯誤日誌及PID文件

  error_log /usr/local/nginx/logs/error.log;

  #錯誤日誌定義等級,[ debug | info | notice | warn | error | crit ]

  pid /usr/local/nginx/nginx.pid;

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

  #所以建議與ulimit -n的值保持一致。

  worker_rlimit_nofile 65535;

  #工作模式及連接數上限

  events {

  use epoll; #epoll是多路復用IO(I/O Multiplexing)中的一種方式,但是僅用於linux2.6以上內核,可以大大提高nginx的性能

  worker_connections 102400; #單個後臺worker process進程的最大並發鏈接數 (最大連接數=連接數*進程數)

  multi_accept on; #盡可能多的接受請求

  }

  #設定http服務器,利用它的反向代理功能提供負載均衡支持

  http {

  #設定mime類型,類型由mime.type文件定義

  include mime.types;

  default_type application/octet-stream;

  #設定日誌格式

  access_log /usr/local/nginx/log/nginx/access.log;

  sendfile on;

  #sendfile 指令指定 nginx 是否調用 sendfile 函數(zero copy 方式)來輸出文件,對於普通應用必須設為 on

  #如果用來進行下載等應用磁盤IO重負載應用,可設置為 off,以平衡磁盤與網絡I/O處理速度,降低系統的uptime.

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

  tcp_nopush on; #防止網絡阻塞

  keepalive_timeout 60;

  #keepalive超時時間,客戶端到服務器端的連接持續有效時間,當出現對服務器的後,繼請求時,keepalive-timeout功能可避免建立或重新建立連接。

  tcp_nodelay on; #提高數據的實時響應性

  #開啟gzip壓縮

  gzip on;

  gzip_min_length 1k;

  gzip_buffers 4 16k;

  gzip_http_version 1.1;

  gzip_comp_level 4; #壓縮級別大小,最大為9,值越小,壓縮後比例越小,CPU處理更快。

  #值越大,消耗CPU比較高。

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

  gzip_vary on;

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

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

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

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

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

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

  proxy_buffers 4 32k; #proxy_buffers緩沖區,網頁平均在32k以下的話,這樣設置

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

  #設定請求緩沖

  large_client_header_buffers 4 4k;

  client_header_buffer_size 4k;

  #客戶端請求頭部的緩沖區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過1k

  #不過由於一般系統分頁都要大於1k,所以這裏設置為分頁大小。分頁大小可以用命令getconf PAGESIZE取得。

  open_file_cache max=102400 inactive=20s;

  #這個將為打開文件指定緩存,默認是沒有啟用的,max指定緩存數量,建議和打開文件數一致,inactive是指經過多長時間文件沒被請求後刪除緩存。

  open_file_cache_valid 30s;

  #這個是指多長時間檢查一次緩存的有效信息。

  open_file_cache_min_uses 1;

  #open_file_cache指令中的inactive參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打開的,如上例,如果有一個文件在inactive

  #包含其它配置文件,如自定義的虛擬主機

  include vhosts.conf;

1. Nginx常用命令管理及升級

查看nginx進程

ps -ef|grep nginx

說明:nginx的進程由主進程和工作進程組成。

啟動nginx

nginx

啟動結果顯示nginx的主線程和工作線程,工作線程的數量跟nginx.conf中的配置參數worker_processes有關。

平滑啟動nginx

kill -HUP `cat /var/run/nginx.pid`

或者

nginx -s reload

其中進程文件路徑在配置文件nginx.conf中可以找到。

平滑啟動的意思是在不停止nginx的情況下,重啟nginx,重新加載配置文件,啟動新的工作線程,完美停止舊的工作線程。

完美停止nginx

kill -QUIT `cat /var/run/nginx.pid`

快速停止nginx

kill -TERM `cat /var/run/nginx.pid`

或者

kill -INT `cat /var/run/nginx.pid`

完美停止工作進程(主要用於平滑升級)

kill -WINCH `cat /var/run/nginx.pid`

強制停止nginx

pkill -9 nginx

檢查對nginx.conf文件的修改是否正確

nginx -t -c /etc/nginx/nginx.conf 或者 nginx -t

停止nginx的命令

nginx -s stop或者pkill nginx

查看nginx的版本信息

nginx -v

查看完整的nginx的配置信息

nginx -V

Nginx升級方法:

下載所需版本的Nginx

wget http://www.nginx.org/download/nginx-1.4.2.tar.gz

獲取舊版本nginxconfigure選項

/usr/local/nginx/sbin/nginx -V

編譯新版本的nginx

tar -xvf nginx-1.4.2.tar.gz

cd nginx-1.4.2

./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module

make

備份舊版本的nginx可執行文件,復制新版本的nginx這行文件

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

cp objs/nginx /usr/local/nginx/sbin/

測試新版本nginx是否正常

/usr/local/nginx/sbin/nginx -t

平滑重啟升級nginx

kill USR2 `cat /usr/local/nginx/log/nginx.pid`

舊版本Nginxpid變為oldbin,這是舊版本和新版本的nginx同時運行,過一段時間等就nginx處理完用戶請求後,執行下面操作

從容關閉舊版本的Nginx進程

kill -WINCH `cat /usr/local/nginx/log/nginx.oldbin`

決定是否升級到新版的nginx

kill HUP `cat /usr/local/nginx/log/nginx.oldbin` ##nginx在不重載配置文件啟動工作進程

kill QUIT `cat /usr/local/nginx/log/nginx.oldbin` ##關閉舊版nginx

驗證nginx是否升級成功

/usr/local/nginx/sbin/nginx V ###

Nginx的知識分享,技術分享