近年來,Nginx在國内取得了突飛猛進的發展,很多門戶網站開始提供Nginx解決方案。Nginx是一款開源的高性能HTTP伺服器和反向代理伺服器,同時支援IMAP/POP3代理服務。由俄羅斯設計師在2002年開發,2004年釋出第一個版本。Nginx以其高性能,高可用,豐富的功能子產品,簡單明了的配置文檔以及占用較低系統資源而著稱。其采用最新的網絡I/O模型,支援高達50000個并發連接配接。
Nginx 是一個安裝非常的簡單、配置檔案非常簡潔、Bug非常少的伺服器。Nginx 啟動容易,并且幾乎可以做到7*24不間斷運作,即使運作數個月也不需要重新啟動。在不間斷服務的情況下還可以進行軟體版本的更新。
Nginx 同時也是一個非常優秀的郵件代理伺服器(最早開發這個産品的目的之一也是作為郵件代理伺服器),Last.fm 描述了成功并且美妙的使用經驗。
Nginx軟體包使用源碼編譯安裝。需要提前将其依賴包進行安裝。
安裝依賴包<code>[root@cc]# yum -y insstall gcc gcc-c++ make pcre pcre-devel openssl zlib</code>
源碼包編譯安裝Nginx,在官網下載下傳http://nginx.org<code>[root@cc]# tar -xf nginx-1.8.0.tar.gz -C /usr/local/ //解包 [root@cc]# cd /usr/local/nginx-1.8.0 [root@cc]# ./configure --with-http_ssl_module //配置 [root@cc]# make //編譯 [root@cc]# make install //安裝</code>
将nginx程式做個軟連接配接,友善執行<code>[root@cc]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin //連接配接</code>
Nginx軟體包采用的是子產品化的設計,子產品分為内置子產品和第三方子產品。
Nginx伺服器安裝好之後,程式的主目錄在/usr/local/nginx下,該目錄下分别為conf(主配置檔案目錄),html(網頁根目錄),logs(日志檔案目錄),sbin(主程式目錄)。Nginx預設無執行腳本,需要手動輸入指令來管理。常用的指令如下:
啟動主程式<code>[root@cc]# nginx</code>
關閉主程式<code>[root@cc]# nginx -s stop</code>
重載nginx配置<code>[root@cc]# nginx -s reload</code>
nginx主配置檔案為/usr/local/nginx/conf/nginx.conf,配置檔案包括全局,event,http,server設定。event主要用來定義Nginx工作模式,http提供Web功能,server用來設定虛拟主機,server必須位于http内部,一個配置檔案可以由多個server,一個server表示一個虛拟主機。虛拟主機包括三種類型:基于域名的虛拟主機,基于IP的虛拟主機,基于端口的虛拟主機。
搭建Nginx伺服器
Nginx配置使用者認證登陸網頁
Nginx配置加密網站
Nginx虛拟站點
1. Nginx反向代理實作叢集負載均衡
Nginx除了可以作為HTTP後端伺服器之外,還是一個高效的反向代理伺服器。在負載均衡的架構中,Nginx可以為我們提供非常穩定且高效的基于七層的負載均衡解決方案。可以根據輪詢,IP哈希,URL哈希的方式排程後端真實伺服器,也支援對後端伺服器的健康檢查功能。
2. Nginx位址重寫規則
位址重寫rewrite的概念:
—獲得一個來訪的URL請求,然後改寫成伺服器可以處理的另一個URL過程
文法:
rewrite regex replacement [選項]
優勢:
—縮短URL,隐藏實際路徑提高安全性
—易于使用者認證和鍵入
—易于被搜尋引擎收錄
用途:
—當網站檔案移動或者檔案目錄名稱發生改變時,出于SEO(搜尋引擎優化)需要,你需要保持舊的URL。
—網站改版,或者網站導航和連接配接發生改變,為了持續持有源連接配接帶來的流量,需要保持舊的URL。
1. 搭建Nginx伺服器
在IP位址為192.168.4.5的主機上安裝部署Nginx服務。
方案:使用2台RHEL7虛拟機,其中一台作為Nginx伺服器(192.168.4.5)、另外一台作為測試用的Linux客戶機(192.168.4.100),如圖1所示。

操作:配置檔案無需更改,直接啟動服務。
用戶端通路:
通路結果如圖2:
2. 配置網站使用者認證通路
操作:在配置檔案裡添加使用者認證子產品,操作如下:
通路結果如圖3:
3.Nginx虛拟主機
要求:配置基于域名的Nginx虛拟主機
操作:操作如下:
1.搭建一個DNS伺服器
用戶端配置DNS伺服器:
用戶端測試DNS解析:
2.修改Nginx配置檔案,添加第二個虛拟主機,操作如下:
用戶端測試:
4.Nginx加密網站部署
要求:配置Nginx加密網站
用戶端去通路:
通路結果如下:
點選我已充分了解可能的風險
最終結果如下:
www.bb.com
1.Nginx反向代理實作負載均衡
要求:配置Nginx反向代理實作伺服器負載均衡。
—後端Web伺服器兩台,可以使用httpd實作
—Nginx采用輪詢的方式調用後端Web伺服器
—兩台Web伺服器的權重要求設定為不同的值
—最大失敗次數為1,失敗逾時時間為30秒
方案:反向代理負載均衡拓撲結構如圖4:
準備兩個後端的Apache伺服器,提供http服務。web1的ip位址為192.168.2.100,web2的ip位址為192.168.2.200。配置web1的http服務操作如下:<code>[root@cc]# yum -y install httpd //裝包 [root@cc]# echo "web1" > /var/www/html/index.html //配置首頁 [root@cc]# systemctl restart httpd //啟服務 [root@cc]# netstat -antup | grep 80 //檢查監聽端口</code>
web2的配置如下:<code>[root@cc]# yum -y install httpd //裝包 [root@cc]# echo "web2" > /var/www/html/index.html //配置首頁 [root@cc]# systemctl restart httpd //啟服務 [root@cc]# netstat -antup | grep 80 //檢查監聽端口</code>
在代理伺服器上配置Nginx反向代理伺服器,操作如下:<code>[root@cc]# vim /usr/local/nginx/conf/nginx.conf ... http { upstream webs { //定義web叢集 server 192.168.2.100 weight=2 max_fails=2 fail_timeout=10; server 192.168.2.200 max_fails=2 fail_timeout=10; //最大失敗數2,失敗逾時時間10s,192.168.2.100權重為2 } location / { //網頁根目錄 root html; proxy_pass http://webs; //指定為代理伺服器 index index.html index.htm; } } [root@cc]# nginx -s reload //重載配置</code>
用戶端測試反向代理負載均衡,效果如圖5:
2.Nginx位址重寫規則案例
a.html---->b.html
操作如下:<code>[root@cc]# vim /usr/local/nginx/conf/nginx.conf rewrite a.html /b.html; //加在server裡 [root@cc]# echo "BBB" > /usr/local/nginx/html/b.html [root@cc]# nginx -s reload</code>
用戶端通路:<code>[root@cc]# firefox http://192.168.4.5/a.html</code>
結果如下:
2.通路192.168.4.5.跳轉到www.qq.com
操作如下:<code>[root@cc]# vim /usr/local/nginx/conf/nginx.conf rewrite ^/ http://www.qq.com ; //加在server裡 [root@cc]# nginx -s reload</code>
用戶端通路:<code>[root@cc]# firefox http://192.168.4.5/</code>
3.根據使用者不同的浏覽器,通路相同頁面,傳回不同的結果
firefox http://192.168.4.5 傳回firefox
curl http://192.168.4.5 傳回curl
操作如下:
用戶端通路:
4.如果檔案不存在,則調轉到首頁
rewrite文法選項詳解:
選項:break , last, redirect, permanent
—break:停止執行其他的重寫規則,完成本次請求
—last:停止執行其他重寫規則,根據URL繼續搜尋其他location,位址欄不改變
—redirect :302臨時重定向,位址欄改變,爬蟲不更新URL
—permanent:301永久重定向,位址欄改變,爬蟲更新URL
Nginx是一個輕量級的web伺服器,同樣起web 服務,比apache 占用更少的記憶體及資源,功能很強大,應用也很廣泛。高度子產品化的設計,編寫子產品相對簡單。目前越來越受到人們的喜愛。