天天看點

【騰訊雲的1001種玩法】Nginx網站伺服器學習與入門

近年來,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所示。

【騰訊雲的1001種玩法】Nginx網站伺服器學習與入門

操作:配置檔案無需更改,直接啟動服務。

用戶端通路:

通路結果如圖2:

【騰訊雲的1001種玩法】Nginx網站伺服器學習與入門

2. 配置網站使用者認證通路

操作:在配置檔案裡添加使用者認證子產品,操作如下:

通路結果如圖3:

【騰訊雲的1001種玩法】Nginx網站伺服器學習與入門

3.Nginx虛拟主機

要求:配置基于域名的Nginx虛拟主機

操作:操作如下:

1.搭建一個DNS伺服器

用戶端配置DNS伺服器:

用戶端測試DNS解析:

2.修改Nginx配置檔案,添加第二個虛拟主機,操作如下:

用戶端測試:

4.Nginx加密網站部署

要求:配置Nginx加密網站

用戶端去通路:

通路結果如下:

【騰訊雲的1001種玩法】Nginx網站伺服器學習與入門

點選我已充分了解可能的風險

最終結果如下:

www.bb.com

1.Nginx反向代理實作負載均衡

要求:配置Nginx反向代理實作伺服器負載均衡。

—後端Web伺服器兩台,可以使用httpd實作

—Nginx采用輪詢的方式調用後端Web伺服器

—兩台Web伺服器的權重要求設定為不同的值

—最大失敗次數為1,失敗逾時時間為30秒

方案:反向代理負載均衡拓撲結構如圖4:

【騰訊雲的1001種玩法】Nginx網站伺服器學習與入門

準備兩個後端的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" &gt; /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" &gt; /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:

【騰訊雲的1001種玩法】Nginx網站伺服器學習與入門

2.Nginx位址重寫規則案例

a.html----&gt;b.html

操作如下:<code>[root@cc]# vim /usr/local/nginx/conf/nginx.conf rewrite a.html /b.html; //加在server裡 [root@cc]# echo "BBB" &gt; /usr/local/nginx/html/b.html [root@cc]# nginx -s reload</code>

用戶端通路:<code>[root@cc]# firefox http://192.168.4.5/a.html</code>

結果如下:

【騰訊雲的1001種玩法】Nginx網站伺服器學習與入門

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>

【騰訊雲的1001種玩法】Nginx網站伺服器學習與入門

3.根據使用者不同的浏覽器,通路相同頁面,傳回不同的結果

firefox http://192.168.4.5 傳回firefox

curl http://192.168.4.5 傳回curl

操作如下:

用戶端通路:

4.如果檔案不存在,則調轉到首頁

【騰訊雲的1001種玩法】Nginx網站伺服器學習與入門

rewrite文法選項詳解:

選項:break , last, redirect, permanent

—break:停止執行其他的重寫規則,完成本次請求

—last:停止執行其他重寫規則,根據URL繼續搜尋其他location,位址欄不改變

—redirect :302臨時重定向,位址欄改變,爬蟲不更新URL

—permanent:301永久重定向,位址欄改變,爬蟲更新URL

Nginx是一個輕量級的web伺服器,同樣起web 服務,比apache 占用更少的記憶體及資源,功能很強大,應用也很廣泛。高度子產品化的設計,編寫子產品相對簡單。目前越來越受到人們的喜愛。