1、什么是Nginx ?
Nginx(發音為“ engine x”)是由俄羅斯軟件工程師Igor Sysoev編寫的免費開源Web服務器。是一款自由的、開源的、高性能的HTTP服務器和反向代理服務器;同時也是一個IMAP、POP3、SMTP代理服務器;Nginx可以作為一個HTTP服務器進行網站的發布處理,另外Nginx可以作為反向代理進行負載均衡的實現。
那么Nginx可以做些什么呢?
- Nginx可以作為靜態資源服務器,用于部署靜態資源,如作為WEB服務器
- Nginx可以作為反向代理服務器,進行服務端的負載、轉發等操作
- Nginx可以提供API服務器,如OpenResty

關于反向代理,首先我們要與正向代理相區分,簡單來說,正/反向代理是與代理屬于客戶端還是服務端有關,如代理服務器與客戶端綁定則為正向代理,代理服務器與服務端綁定則為反向代理服務器,如下圖所示:
關于API服務器,nginx采用模塊化設計,一些第三方模塊可以直接讀寫數據庫,所以nginx可以通過安裝第三方模塊來操作數據庫,有lua模塊提供這樣的操作。
OpenResty是一個基于 NGINX 的可伸縮的 Web 平臺,提供了很多高質量的第三方模塊。OpenResty 是一個強大的 Web 應用服務器,Web 開發人員可以使用 Lua 腳本語言調動 Nginx 支持的各種 C 以及 Lua 模塊,在性能方面,OpenResty可以快速構造出足以勝任 10K 以上并發連接響應的超高性能 Web 應用系統。
2、為什么要采用Nginx?
Nginx具備以下特點:
- Nginx: 開源,高并發,高性能,可擴展性好,高可靠性,熱部署
- Apache低效: 一個連接一個進程
如果是使用Apache作為Web服務器軟件,由于Apache一個進程就是創建一個對應的連接。假設您有1,000個同時連接的客戶端,他們請求了類似的內容。如果每個客戶端僅分配1 MB的額外內存,則將導致1000 MB(約1 GB)的額外內存專用于僅為1000個客戶端提供100 KB的內容。事實上,典型的基于Apache的Web服務器通常為每個連接分配超過1 MB的額外內存,對于持久連接,處理并發性的問題更加明顯,因為要避免與建立新的HTTP連接相關的延遲,客戶端將保持連接狀態,并且對于每個連接的客戶端,Web服務器都會分配一定數量的內存。如下所示Nginx市場趨勢如下:

3、Linux下Nginx的安裝部署(基于源碼構建,可以自定義模塊)
1、安裝前準備
檢查linux版本,需要linux內核2.6及以上(支持epoll)。
uname ‐a

2、安裝依賴庫
Nginx中的功能是模塊化的,而模塊有依賴于一些軟件包(如pcre庫、zlib庫、openssl庫),因此需 要先安裝依賴庫。
- GCC編譯器: 編譯C語言程序;
- PCRE庫: 支持正則表達式;
- zlib庫: 對http包內容進行gzip格式壓縮;
- OpenSSL開發庫:支持更安全的SSL協議,加密算法。
yum ‐y install make zlib‐devel gcc‐c++ libtool openssl‐devel pcre‐devel
3、下載源碼
下載nginx的官網下載地址: http://nginx.org/en/download.html
#下載源碼 wget http://nginx.org/download/nginx‐1.14.2.tar.gz #解壓 tar ‐zxvf nginx‐1.14.0.tar.gz
源碼目錄如下所示:

目錄說明如下所示:
4、源碼構建
基于nginx源碼構建文檔: http://nginx.org/en/docs/configure.html
# 默認構建 ./configure # 基于參數構建 #‐‐prefix 設置Nginx的安裝目錄 #‐‐with‐http_ssl_module 設置在Nginx中允許使用 http_ssl_module模塊的相關功能 ./configure ‐‐prefix=/usr/local/nginx ‐‐with‐http_stub_status_module ‐‐with‐ http_ssl_module ‐‐with‐debug
如下示例所示,配置了一些path信息等,但是記得必須寫成一行(如上面示例所示):
./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=../pcre-8.44 --with-zlib=../zlib-1.2.11
5、編譯安裝
make && make install
6、啟動Nginx
# 進入安裝目錄 /usr/local/nginx,啟動Nginx ./sbin/nginx
# 幫助文檔 ./sbin/nginx ‐h
# 快速停止,不會管正在處理的請求 ./sbin/nginx ‐s stop # 優雅退出,會等待請求結束之后再關閉,可以設置超時時間,超時時間還沒處理完也會直接關閉 ./sbin/nginx ‐s quit # 熱裝載配置文件 對應命令 kill -HUP master進程號 ./sbin/nginx ‐s reload # 重新打開日志文件 ./sbin/nginx ‐s reopen
如下圖所示:
默認端口80,啟動后瀏覽器訪問http://localhost,如本人修改監聽端口為8080,訪問界面為:
4、Mac下的Nginx安裝與部署
1、安裝
brew install nginx
2、查看Nginx版本及安裝詳情
可以通過命令查看Nginx版本安裝情況:
# 查看Nginx版本 nginx -v # 查看Nginx版本及安裝路徑 nginx -V
如下圖所示:

3、啟動
brew services start nginx
打開http://localhost:8080,看到這個頁面說明啟動成功:

4、命令解釋
# 停止 brew services stop nginx # 重啟(會先stop,再start) brew services restart nginx # 重新加載配置(不會stop,只是重新加載配置) nginx -s reload # 驗證nginx配置文件是否正確 nginx -t #Nginx默認配置文件位置 /usr/local/etc/nginx/nginx.conf
浙公網安備 33010602011771號