1. 程式人生 > >Nginx知識點筆記記錄一

Nginx知識點筆記記錄一

一:Nginx簡介

  1.   Nginx的產生
      Nginx是一款高效能的 HTTP 和反向代理伺服器,由俄羅斯人Igor Sysoev(伊戈爾·賽索耶夫)為俄羅斯網
      站Rambler.ru開發的,在Rambler.ru網站平穩的運行了四年,而且俄俄羅斯超過20%的虛擬主機平臺採用
      Nginx作為反向代理伺服器。
              在國內,使用nginx網站使用者有:百度、京東、金山愛詞霸、新浪、校內網、、淘寶、YUPOO相簿、
              豆瓣、迅雷看看、網易、騰訊等。
  2. Nginx的優點
      ⑴高併發量:根據官方給出的資料,能夠支援高達 50,000 個併發連線數的響應
      ⑵記憶體消耗少:處理靜態檔案,同樣起web 服務,比apache 佔用更少的記憶體及資源,所以它是輕量級的     
      ⑶簡單穩定:配置簡單,基本在一個conf檔案中配置,效能比較穩定,可以7*24小時長時間不間斷執行
      ⑷模組化程度高:Nginx是高度模組化的設計,編寫模組相對簡單,包括 gzipping, byte ranges, chunked 
                                   responses,以及 SSI-filter 等 filter,支援 SSL 和 TLSSNI。
      ⑸支援Rwrite重寫規則:能夠根據域名、URL的不同, 將HTTP請求分發到不同的後端伺服器群組。
      ⑹低成本:Nginx可以做高併發的負載均衡,且Nginx是開源免費的,如果使用F5等硬體來做負載均衡,
                        硬體成本比較高
      ⑺支援多系統:Nginx程式碼完全用C語言從頭寫成,已經移植到許多體系結構和作業系統,包括:Linux、
                               FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows,由於Nginx是免費開源的,
                               可以在各系統上編譯並使用。
      
  3. Nginx的缺點
      ⑴動態處理差:nginx處理靜態檔案好,耗費記憶體少,但是處理動態頁面則很雞肋,
                               現在一般前端用nginx作為反向代理抗住壓力,apache作為後端
                               處理動態請求。
      ⑵rewrite弱:雖然nginx支援rewrite功能,但是相比於Apache來說,Apache比nginx 的rewrite 強大。

二:Nginx的編譯與安全

  1.   下載穩定版本的Nginx(Linux環境CentOS7) 
             
  2. 使用命令:wget+下載地址
      
  3. 解壓Nginx的安裝包
      命令:tar zxvf +壓縮包名稱
      
      
  4. 安裝並且指定Nginx安裝路徑的命令
      ⑴首先我們需要進入Nginx的安裝包目錄下
           
       ⑵基於上面路徑的安裝命令
            ./configure --prefix=要安裝到的路徑
            
            通過上面命令的安裝發現檢查沒有通過,缺少了PCRE library(這個就是正則表示式的庫)。
            那麼我們就先把這個PCRE安裝上就可以了。
            安裝命令:yum install pcre
                   
            那麼應該就是缺少pcre-devel,需要我們下載這個
            安裝命令:yum install pcre-devel
                  
            注意:可能還會出現zlib library沒有那麼就需要安裝 yum install zlib-devel安裝包
            安裝好之後我們再一次執行上面安裝Nginx的命令:
                   
            安裝OK如下:
                        
  5. 下面還需要編譯Nginx
       命令:make && make install
       
       
       
  6. 下面我們需要啟動nginx
       ⑴首先我們需要進入到安裝的目錄下
           
           conf:配置檔案
           html:網頁檔案
           logs:日誌檔案
           sbin:主要的二進位制程式
       ⑵啟動如下
            命令:./sbin/nginx
             
  7. 檢查Nginx是否啟動OK
      命令:./sbin/nginx -t
       
      效果:
        

三:Nginx的訊號量

  1.  Nginx的訊號控制
      
     QUIT:優雅的關閉程序,即等請求結束後再關閉    
     ⑴ 使用INT控制例項
          a:檢視當前nginx程序
                
          b:現在我們強制的關掉nginx執行緒(關掉主執行緒的話,子執行緒也會自動關閉)
                
      ⑵使用HUP 例項(修改配置檔案後,不需要重新啟動nginx,只需要使用HUP命令,就可以重新使配置檔案生效)
          a:首先我們在nginx的html目錄下建立一個test.html和nginx本身的index.html檔案同目錄
                
         b:修改目錄/opt/nginx/conf下的nginx.conf檔案,讓nginx預設讀test.html
                 
         c:我們現在沒有重啟nginx,檢視網頁效果
                 
                使用命令:kill -HUP +主程序PID
                
                效果:
                 
       ⑶使用USR1例項
            Linux檔案系統在向檔案寫資料的時候,不是根據檔名來做標識的,而是根據inode,
            就是如果將nginx的日誌檔案access.log改了別的名字(access.log.bak),nginx日誌
            還是會寫到access.log.bak檔案中,如果使用kill USR1 xx(nginx master pid),nginx會
            重新的生成新的日誌檔案,而不再將日誌資料寫入到access.log.bak檔案中。
          a:首先我們檢視access.log檔案
                   
         b:我們將檔名修改為access.log.bak,並且為它重新建立一個access.log檔案
                
         c:再次重新整理頁面看看效果
                
         d:下面我們使用命令解決這個問題
                命令:kill -USR1 +主程序PID
               
  2. 小技巧
      在使用kill命令時,如果想將pid用別的方式代替,其實在logs目錄下,nginx.pid就是
      存放nginx master pid,所以kill -HUP nginx master pid  ==  kill -HUP  `cat nginx.pid`
    (注意:這裡的引號是單反引號)



    文章目錄