1、Nginx概述:php
Nginx (發音爲[engine x])專爲性能優化而開發,其最知名的優勢是它的穩定性和低系統資源消耗,以及對併發鏈接的高處理能力(單臺物理服務器可支持30000~50000個併發鏈接), 是一個高性能的 HTTP 和反向代理服務器,也是一個IMAP/POP3/SMTP 代理服。nginx
二、Apache服務器和nginx的優缺點:
咱們以前大量使用Apache來做爲HTTPServer。Apache具備很優秀的性能,並且經過模塊能夠提供各類豐富的功能。
1)首先Apache對客戶端的響應是支持併發的,運行httpd這個daemon進程以後,它會同時產生多個子進程/線程,每一個子進程/線程分別對客戶端的請求進行響應;web
Apache兩種工做模式:是prefork模式與worker模式shell
prefork每一個子進程只有一個線程,效率高但消耗內存大,是lunix下默認的模式;worker模式每一個子進程有多個線程,內存消耗低,但一個線程崩潰會牽連其它同子進程的線程。apache
2)另外,Apache能夠提供靜態和動態的服務,例如對於PHP的解析不是經過性能較差的CGI實現的而是經過支持PHP的模塊來實現的(一般爲mod_php5,或者叫作apxs2)。
3)缺點:
所以一般稱爲Apache的這種Server爲process-based server,也就是基於多進程的HTTPServer,由於它須要對每一個用戶請求建立一個子進程/線程進行響應;
這樣的缺點是,若是併發的請求很是多(這在大型門戶網站是很常見的)就會須要很是多的線程,從而佔用極多的系統資源CPU和內存。所以對於併發處理不是Apache的強項。
4)解決方法:
目前來講出現了另外一種WebServer,在併發方面表現更加優越,叫作asynchronousservers異步服務器。最有名的爲Nginx和Lighttpd。所謂的異步服務器是事件驅動程序模式的event-driven,除了用戶的併發請求一般只須要一個單一的或者幾個線程。所以佔用系統資源就很是少。這幾種又被稱爲lightweight web server。舉例,對於10,000的併發鏈接請求,nginx可能僅僅使用幾M的內存;而Apache可能須要使用幾百M的內存資源。
使用Apache來做爲HTTPServer的狀況我這裏再也不多作介紹;上面咱們介紹到Apache對於PHP等服務器端腳本的支持是經過本身的模塊來實現的,並且性能優越。
咱們一樣可使用nginx或者lighttpd來做爲HTTPServer來使用。
nginx和Apache相似都經過各類模塊能夠對服務器的功能進行豐富的擴展,一樣都是經過conf配置文件對各類選項進行配置。對於PHP等,nginx沒有內置的模塊來對PHP進行支持,而是經過FastCGI來支持的。
nginx則沒有本身提供處理PHP的功能,須要經過第三方的模塊來提供對PHP進行FastCGI方式的集成。vim
三、編譯安裝Nginx軟件瀏覽器
目前Nginx的最新穩定版本爲1.0.8,開發版本爲1.1.6,其安裝文件能夠從官方網站http://www.nginx.org下載,下面以穩定版爲例,介紹nginx的安裝步驟。安全
一、安裝支持軟件:性能優化
Nginx的配置及運行須要pcre、zlib等軟件包的支持,所以應預先安裝這些軟件的開發包(devel),以便提供相應的庫和頭文件,確保Nginx的安裝順利完成。服務器
[root@localhost /]#yum -y install pcre-devel zlib-devel
二、建立運行用戶、組:
Nginx服務程序默認以nobody身份運行,建議爲其建立專門的用戶帳號,以便更準確地控制其訪問權限,增長靈活性、下降安全風險。如:建立一個名爲nginx的用戶,不創建宿主目錄,也禁止登陸到shell環境。
[root@localhost /]#useradd -M -s /sbin/nologin nginx
三、編譯安裝nginx
[root@localhost /]#tar zxf nginx-1.0.8.tar.gz -C /usr/src/
[root@localhost /]#cd /usr/src/nginx-1.0.8
[root@localhost nginx-1.0.8]#./config --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[root@localhost nginx-1.0.8]#make && make install
[root@localhost /]#ln -s /usr/local/nginx/sbin/* /usr/local/sbin
注:配置前能夠參考:./configure --help給出說明
--prefix:設定Nginx的安裝目錄
--user和—group:指定Nginx運行用戶和組
--with-http_stub_status_module:啓用http_stub_status_module模塊以支持狀態統計
4、編寫nginx啓動腳本
一、檢查配置文件
與apache的主程序httpd相似,Nginx的主程序也提供了」-t」選項用來對配置文件進行檢查,以便找出不當或錯誤的配置。配置文件nginx.conf默認位於安裝目錄下的conf/子目錄中。若要檢查位於其餘位置的配置文件,可以使用」-c」選項來指定路徑。
二、啓動、中止nginx
直接運行nginx便可啓動Nginx服務器,這種方式將使用默認的配置文件,若要改用其餘配置文件,需添加」-c 配置文件路徑」選項來指定路徑。須要注意的是,若服務器中已安裝有httpd等其餘WEB服務軟件,應採起措施避免部突。
當Nginx進程運行時,PID號默認存放在logs/目錄下的nginx.pid文件中,所以若改用kill命令,也能夠根據nginx.pid文件中的PID號來進行控制。
[root@localhost /]#killall -9 nginx
三、編寫nginx啓動腳本
爲了使Nginx服務的啓動、中止、重載等操做更加方便,能夠編寫Nginx服務腳本,並使用chkconfig和service工具來進行管理,也更加符合RHEL系統的管理習慣。
[root@localhost /]#vim /etc/init.d/nginx
[root@localhost /]#chmod +x /etc/init.d/nginx
[root@localhost /]#chkconfig --add nginx
這樣一來,就能夠經過nginx腳原本啓動、中止、重啓、重載Nginx服務器了。
5、修改nginx.conf配置文件
在Nginx服務器的主配置文件nginx.conf中,包括全局配置、I/O事件配置、HTTP配置這三大塊內容,配置語句的格式爲」關鍵字值;」(末尾以分號表示結束),以」#」開始的部分表示註釋。
一、全局配置:由各類配置語句組成,不使用特定的界定標記。全局配置部分包括運行用戶、工做進程數、錯誤日誌、PID存放位置等基本設置。
二、I/O事件配置:使用」events {}」界定標記,用來指定Nginx進程的I/O響應模型,每一個進程的鏈接數等設置。
三、HTTP配置:使用」http{}」界定標記,包括訪問日誌、HTTP端口、網頁目錄、默認字符集、鏈接保持、以及虛擬主機、PHP解析等一系列設置。其中大部分配置語句包含在子界定記」servier {}」內。
因爲內容太多就不一一解釋了,你們能夠自行研究。
6、配置狀態統計以及虛擬主機
一、nginx的訪問狀態統計
Nginx內置了HTTP_STUB_STATUS狀態統計模塊,用來反饋當前的WEB訪問狀況。配置
編譯參數時可添加—with-http_stub_stastus_module來啓用此模塊。要使用Nginx的狀態統計功能,除了啓用內建模塊之外,還須要修改nginx.conf文件,指定訪問位置並打開stub_status配置。在http{}配置的server{}子配置內添加以下配置項。
重啓服務,在瀏覽器中輸入URL訪問以下:
[root@localhost /]#service nginx restart
二、配置基於域名的虛擬主機
使用Nginx搭建虛擬主機服務器時,每一個虛擬WEB站點擁有獨立的」server {}」配置段,各自
監聽的IP地址、端口號能夠單獨指定,固然網站名稱也是不一樣的。
例如:要建立兩個站點www.benet.com和www.accp.com爲兩個虛擬WEB主機分別創建根目錄,並準備測試首頁。
配置兩個」server {}」區域,分別對應兩個WEB站點,指定各自的網站名稱、監聽地址、網站根目錄、訪問日誌等信息,而後重載配置。
重啓服務,在瀏覽器中分別輸入不一樣域名,訪問不一樣的網站。
[root@localhost /]#service nginx restart
因爲只有晚上cai有時間更新博客,因此寫的質量不是很好,但願你們諒解,也但願文章對你們有所幫助。