Nginx知識點筆記記錄一
阿新 • • 發佈:2018-12-09
一:Nginx簡介
- Nginx的產生
Nginx是一款高效能的 HTTP 和反向代理伺服器,由俄羅斯人Igor Sysoev(伊戈爾·賽索耶夫)為俄羅斯網
站Rambler.ru開發的,在Rambler.ru網站平穩的運行了四年,而且俄俄羅斯超過20%的虛擬主機平臺採用
Nginx作為反向代理伺服器。
在國內,使用nginx網站使用者有:百度、京東、金山愛詞霸、新浪、校內網、、淘寶、YUPOO相簿、
豆瓣、迅雷看看、網易、騰訊等。 - 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是免費開源的,
可以在各系統上編譯並使用。
- Nginx的缺點
⑴動態處理差:nginx處理靜態檔案好,耗費記憶體少,但是處理動態頁面則很雞肋,
現在一般前端用nginx作為反向代理抗住壓力,apache作為後端
處理動態請求。
⑵rewrite弱:雖然nginx支援rewrite功能,但是相比於Apache來說,Apache比nginx 的rewrite 強大。
二:Nginx的編譯與安全
- 下載穩定版本的Nginx(Linux環境CentOS7)
- 使用命令:wget+下載地址
- 解壓Nginx的安裝包
命令:tar zxvf +壓縮包名稱
- 安裝並且指定Nginx安裝路徑的命令
⑴首先我們需要進入Nginx的安裝包目錄下
⑵基於上面路徑的安裝命令
./configure --prefix=要安裝到的路徑
通過上面命令的安裝發現檢查沒有通過,缺少了PCRE library(這個就是正則表示式的庫)。
那麼我們就先把這個PCRE安裝上就可以了。
安裝命令:yum install pcre
那麼應該就是缺少pcre-devel,需要我們下載這個
安裝命令:yum install pcre-devel
注意:可能還會出現zlib library沒有那麼就需要安裝 yum install zlib-devel安裝包
安裝好之後我們再一次執行上面安裝Nginx的命令:
安裝OK如下:
- 下面還需要編譯Nginx
命令:make && make install
- 下面我們需要啟動nginx
⑴首先我們需要進入到安裝的目錄下
conf:配置檔案
html:網頁檔案
logs:日誌檔案
sbin:主要的二進位制程式
⑵啟動如下
命令:./sbin/nginx
- 檢查Nginx是否啟動OK
命令:./sbin/nginx -t
效果:
三:Nginx的訊號量
- 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
- 小技巧
在使用kill命令時,如果想將pid用別的方式代替,其實在logs目錄下,nginx.pid就是
存放nginx master pid,所以kill -HUP nginx master pid == kill -HUP `cat nginx.pid`
(注意:這裡的引號是單反引號)
文章目錄