Nginx簡介
Nginx是俄羅斯人編寫的一款高性能的HTTP和反向代理伺服器。它可以選擇高效的epoll、kqueue、eventport作為網絡I/O模型,在高并發的情況下,能夠支援高達50000個并發連接配接數的響應,而CPU、記憶體待系統資源消耗卻很低。
Nginx特點
高并發。理論測試可支撐5萬并發,生産環境可支撐2-4萬并發,是因為其采用epoll(Linux 2.6-Kernel)、kqueue(FreeBSD)網絡I/O模型,而Apache采用的傳統select模型,其比較穩定的prefork模式為多程序模式,需要經常派生子程序,比較耗資源。
記憶體消耗少
成本低廉
配置檔案簡單
支援Rwrite重寫規則。能夠根據域名、URL的不同,将不同的HTTP請求分到不同的後端伺服器群組。
内置健康檢查功能。如果Nginx Proxy後端的某台Web伺服器當機了,不會影響前端的通路。
節省帶寬。支援GZIP壓縮,可以添加浏覽器本地緩存的Header頭。
支援熱布署。
在介紹Nginx配置之前,先來了解一下Nginx可以使用的信号控制
TERM,INT 快速關閉
QUIT 從容關閉
HUP 平滑重新開機,重新加載配置檔案
USR1 重新打開日志檔案,用于日志切割時
USR2 平滑更新可執行程式
WINCH 從容關閉工作程序
Nginx配置
1、下載下傳
# http://nginx.org/download/nginx-1.2.8.tar.gz
2、安裝。Nginx的一些子產品需要第三方庫的支援,如gzip需要zlib庫;rewrite子產品需要pcre庫;ssl功能需要openssl庫
# yum install gcc gcc-c++ zlib zlib-devel
openssl openssl-devel pcre pcre-devel
# useradd -s /sbin/nologin nginx
# ./configure --prefix=/usr/local/nginx/
--user=nginx --group=nginx --with-http_stub_status_module
--with-http_ssl_module
# make && make install
3、Nginx啟動
# /usr/local/nginx/sbin/nginx –c
/usr/local/nginx/conf/nginx.conf
4、Nginx停止
# pkill -9 nginx ###強制停止所有Nginx程序,建議使用下面的方法來操作
或
# kill -WINCH `cat
/usr/local/nginx/logs/nginx.pid`
# kill –QUIT `cat
5、Nginx平滑重新開機(重新開機前要對修改後的conf做測試)
# /usr/local/nginx/sbin/nginx –t –c
/usr/local/nginx/conf/nginx.conf ### -t參數測試配置檔案
# /usr/local/nginx/sbin/nginx –s reload –c
/usr/local/nginx/conf/nginx.conf ###-s給主程序發送信号,可選參數stop、quit、reopen、reload
或
# kill –HUP nginx主程序号
6、Nginx的平滑更新
Nginx的更新0.8版本之前是不能通過make
upgrade更新的,隻能通過kill的控制信号來操作
方法一:
1>.下載下傳新版本的nginx-1.3.15.tar.gz
2>.檢視舊版本安裝時的參數
# /usr/local/nginx/sbin/nginx –V
3>.重命名舊版本nginx可執行檔案
# mv /usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx.old
4>.解壓并安裝新版本nginx
# tar -zxvf nginx-1.3.15.tar.gz
# cd nginx-1.3.15/
# ./configure --prefix=/usr/local/nginx/ --user=nginx
--group=nginx --with-http_ssl_module --with-http_stub_status_module ###這裡的編譯參數是通過-V得到的
# make && make install ###直接将新版本的nginx安裝到舊版本目錄
5>.通過USR2信号更新
# kill -USR2 `cat log/nginx.pid` ###舊版本nginx的主程序将重命名它的.pid為.oldbin
6>.啟動新版本主程序
# /usr/local/nginx/sbin/nginx ###啟動新版本的nginx,此時ps –ef可以看到有兩個master、worker
7>.先關閉舊版本的工作程序,一段時間後,舊的工作程序在處理了所有已連接配接請求後退出,由新的工作程序來處理新的請求連接配接,而舊的主程序依然存在,通過QUIT開關退出舊版本主程序
# kill –WINCH ‘cat log/nginx.oldbin’
# kill –QUIT ‘cat log/nginx.oldbin’
方法二:
1-4中的步驟是相同的,隻是在最後執行完make操作後,不執行make install
5>.拷貝新版本源編譯目錄的下的nginx二進制檔案至nginx可執行檔案目錄下
# cp -a objs/nginx /usr/local/nginx/sbin/
6>.執行更新操作
# make upgrade
7>.檢視更新後的版本是否正确
# /usr/local/nginx/sbin/nginx -V ###發現版本已由原來的1.2.8更新成1.3.15