最近在學習NginX,因此來寫個博客記錄一下學習過程中的關鍵部分,以便於以後複習和總結。首先,就先來說明一下Nginx的一些基本操作。
在說操作之前,還是要簡單介紹下Nginx,Nginx 是俄羅斯人編寫的十分輕量級的 HTTP 服務器,Nginx,它的發音爲“engine X”,是一個高性能的HTTP和反向代理服務器,同時也是一個 IMAP/POP3/SMTP 代理服務器。
那麼Nginx有哪些優點呢?Nginx 以事件驅動的方式編寫,所以有非常好的性能,同時也是一個非常高效的反向代理、負載平衡。其擁有匹配 Lighttpd 的性能,同時還沒有 Lighttpd 的內存泄漏問題,而且 Lighttpd 的 mod_proxy 也有一些問題並且很久沒有更新。
Nginx 做爲 HTTP 服務器,有以下幾項基本特性:
處理靜態文件,索引文件以及自動索引;打開文件描述符緩衝.
無緩存的反向代理加速,簡單的負載均衡和容錯.
FastCGI,簡單的負載均衡和容錯.
模塊化的結構。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCGI 或其它代理服務器處理單頁中存在的多個 SSI,則這項處理可以並行運行,而不需要相互等待。
- 支持 SSL 和 TLSSNI.
Nginx 專爲性能優化而開發,性能是其最重要的考量,實現上非常注重效率 。它支持內核 Poll 模型,能經受高負載的考驗,有報告表明能支持高達 50,000 個併發連接數。
Nginx 具有很高的穩定性。其它 HTTP 服務器,當遇到訪問的峯值,或者有人惡意發起慢速連接時,也很可能會導致服務器物理內存耗盡頻繁交換,失去響應,只能重啓服務器。例如當前 apache 一旦上到 200 個以上進程,web響應速度就明顯非常緩慢了。而 Nginx 採取了分階段資源分配技術,使得它的 CPU 與內存佔用率非常低。Nginx 官方表示保持 10,000 個沒有活動的連接,它只佔 2.5M 內存,所以類似 DOS 這樣的攻擊對 Nginx 來說基本上是毫無用處的。就穩定性而言,Nginx 比 lighthttpd 更勝一籌。
Nginx 支持熱部署。它的啓動特別容易, 並且幾乎可以做到 7*24 不間斷運行,即使運行數個月也不需要重新啓動。你還能夠在不間斷服務的情況下,對軟件版本進行進行升級。
Nginx 採用 master-slave 模型,能夠充分利用 SMP 的優勢,且能夠減少工作進程在磁盤 I/O 的阻塞延遲。當採用 select()/poll() 調用時,還可以限制每個進程的連接數。
Nginx 代碼質量非常高,代碼很規範,手法成熟,模塊擴展也很容易。特別值得一提的是強大的 Upstream 與 Filter 鏈。Upstream 爲諸如 reverse proxy,與其他服務器通信模塊的編寫奠定了很好的基礎。而 Filter 鏈最酷的部分就是各個 filter 不必等待前一個 filter 執行完畢。它可以把前一個 filter 的輸出做爲當前 filter 的輸入,這有點像 Unix 的管線。這意味着,一個模塊可以開始壓縮從後端服務器發送過來的請求,且可以在模塊接收完後端服務器的整個請求之前把壓縮流轉向客戶端。
Nginx 採用了一些 os 提供的最新特性如對 sendfile (Linux2.2+),accept-filter (FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+)的支持,從而大大提高了性能。
說完這些宏觀的東西,下面就來說下如何配置和搭建一個Nginx服務器
首先,可以先去http://nginx.org/download下載一份最新版本的Nginx
然後./configure, make, make install(如果安裝失敗,確認下你是否有pcre和zlib庫)
安裝完成後,你應該會在你的/usr/local下多出一個nginx文件夾,然後進入後在裏面的sbin文件夾中存放着可執行文件nginx
然後,你可以通過這個可執行文件來啓動nginx,下面來說下啓動的基本選項
你可以使用基本的./nginx來進行啓動,也可以加上啓動項./nginx -c /file_road/nginx.conf,如果不加啓動選項,默認的配置文件在/usr/local/nignx/conf/nginx.conf,在/usr/local/nignx/conf下也存放着其他的配置文件
運行過程中的重載配置
./nginx -s reload
結束nginx的命令
./nginx -s stop stop方式是快速停止nginx,可能並不保存相關信息
./nginx -s quit quit方式是完整有序的停止nginx,並保存相關信息。
pkill -9 nginx 結束進程方式暴力退出
再來說下啓動nginx中的一些基本選項的意思
-?,-h : 打開幫助信息
-v : 顯示版本信息並退出
-V : 顯示版本和配置選項信息,然後退出
-t : 檢測配置文件是否有語法錯誤,然後退出
-q : 在檢測配置文件期間屏蔽非錯誤信息
-s signal : 給一個 nginx 主進程發送信號:stop(停止), quit(退出), reopen(重啓), reload(重新加載配置文件)
-p prefix : 設置前綴路徑(默認是:/usr/local/nginx/)
-c filename : 設置配置文件(默認是:/usr/local/nginx/conf/nginx.conf)
-g directives : 設置配置文件外的全局指令