Nginx學習筆記(二)——搭建Web伺服器

來源:互聯網
上載者:User

標籤:nginx;web

背景介紹

Nginx自誕生起就採用了2.6以後核心所支援的epoll模型進而使得處理效率大幅提升而受到了廣大使用者的青睞,但就Web服務來講,Nginx所擁有的功能Apache都可以實現,但反過來確不行,這就是大多數情境時使用Nginx作為反向 Proxy而不能取代Apache的原因。本文以Nginx_1.12.1版本為例,介紹Nginx充當Web伺服器時的配置及用法。

軟體安裝

儘管Nginx已經被收錄進epel源,但仍然推薦使用編譯的方式進行安裝,這樣更為靈活。安裝步驟為:

1.從Nginx官網下載1.12.1源碼包並解壓到/usr/local/src目錄

# tar -xf nginx-1.12.1.tar.gz -C /usr/local/src/

2.建立用於運行worker進程的使用者。Nginx採用Master+Worker方式進行工作,只能有1個Master進程;Worker進程可以有多個,Master用於給worker傳遞參數與指令,worker負責處理客戶請求,這種方式的優點是1個worker出現問題不會影響到Master。

# useradd -M -r -s /sbin/nologin nginx 

3.根據需求選擇要啟用的功能編譯安裝。注意:Nginx可以自訂記錄層級,但如果要啟用debug層級的日誌,在編譯時間必須開啟--with-debug選項,否則就算設定為debug層級也不生效,另外如果需要編譯第三方模組,需要使用--add-module選項。

# cd /usr/local/src/

# ./configure --prefix=/usr/local/nginx/ --user=nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_gzip_static_module --with-http_gunzip_module --with-http_stub_status_module --with-pcre --add-module=/root/echo-nginx-module-0.60

# make && make install

Nginx主設定檔

Nginx的設定檔是nginx.conf檔案,從結構上分為全域配置段和局部配置段,為了便於管理,建議的做法是將主配置段和局部配置段分成2個檔案,主配置段最佳化效能和配置相關事件,局部配置段佈建服務相關的內容,在主配置段使用include指令引用局部配置段。

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/9D/91/wKioL1mB-gWxq7QOAABfINFb1wc248.png" title="1.png" style="float:none;" alt="wKioL1mB-gWxq7QOAABfINFb1wc248.png" />

中worker_processes是啟動worker進程的數量,推薦的值是vcpu數量減1個;worker_connections是一個worker進程可以維持的串連數量預設為1024,整個Nginx伺服器的串連數量=worker數量*每個worker的串連數;worker_priority是設定進程的nice值,linux系統中所有進程通過nice值來確定優先順序,nice範圍在-20到19之間,值越小優先順序越高,預設所有進程的nice值都為0;worker_rlimit_noffile是一個worker進程最大允許開啟的檔案數,每一個通訊端都需要對應一個socket檔案,預設為1024。此處將局部配置段單獨存放在server.conf檔案中,通過include指令引用該設定檔。

局部配置段

1.server段定義

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/9D/91/wKiom1mB-gWQIB-tAAAKzT2MDcA820.png" title="2.png" style="float:none;" alt="wKiom1mB-gWQIB-tAAAKzT2MDcA820.png" />

server段類似於Apache中的virtualhost段,一個http段中可以有多個server段偵聽在不同的通訊端上,listen為偵聽的連接埠,如果希望偵聽在其他通訊端上可以在listen後面通過IP:Port的方式設定;server_name設定服務的主機名稱,主機名稱可以有多個,並且支援萬用字元和Regex(~),優先順序為:

(1)先做精確匹配:www.contoso.com;

(2)左側萬用字元匹配:*.contoso.com;

(3)右側萬用字元匹配:www.contoso.*;

(4)Regex:~^.*\.contoso\.com$; 

如果主機名稱不能陪上述任意匹配到,預設匹配第一個server,除非的別設定哪一個server是default_server。

2.location段定義

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/9D/91/wKioL1mB-gaxBTI8AABEKJkdsLo041.png" title="3.png" style="float:none;" alt="wKioL1mB-gaxBTI8AABEKJkdsLo041.png" />

Nginx中location段的定義非常靈活,location表示請求資源的位置,後面可以跟目錄或者是檔案,而location在檔案系統上的絕對路徑還要取決於root或alias的設定。類似於server_name,location也有多種匹配方式,用法為:location [=|^~|~|~*] /uri,優先順序為:

(1)=,精確匹配;

(2)^~,前半部分匹配;

(3)~,區分大小寫匹配;

(4)~*,不區分大小寫匹配;

如果主機名稱不能陪上述任意匹配到,預設匹配第一個location。

3.root值設定

root類似於Apache中的DocumentRoot,root可以設定在http段、server段和location段,作用範圍越小,優先順序越高,不設定預設繼承上一級設定,root相當於路徑的起始位置,後面的值可以相對路徑或絕對路徑,如果是相對路徑,他相對的是Nginx的安裝路徑而言,location在檔案系統上的位置實際為:root/location,以為例,根目錄(/)所在的位置為/usr/local/nginx/html,50x.html檔案所在位置為/usr/local/nginx/html/50x.html。

4.alias值設定

除了使用root表示路徑的起始位置,還可以使用alias進行路徑別名設定

650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/9D/92/wKiom1mB-gbh8HRwAAANuSiNfkM973.png" title="4.png" style="float:none;" alt="wKiom1mB-gbh8HRwAAANuSiNfkM973.png" />

與root表示啟示位置不同,alias相當於路徑的別名,結合,location中alias目錄所在的為/var/www/alias,而/alias目錄本身可以在檔案系統上不存在。

5.狀態監測

Nginx提供了一個狀態監測的模組,編譯時間使用--with-http_stub_status_module選項進行開啟,並在設定檔中進行設定設定

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M00/9D/92/wKiom1mB-gbTbGhRAAAHUuy7WLU647.png" title="5.png" style="float:none;" alt="wKiom1mB-gbTbGhRAAAHUuy7WLU647.png" />

通過瀏覽器可以查看監測資料,Active connections表示當前所有開啟狀態的串連數;accept表示處理的串連數,handle成功建立的握手數,每個串連可以包含多個請求,requests表示處理的請求數。reading表示讀取到用戶端的header資訊數,writing表示返回給用戶端header的資訊數,waiting的數值在開啟keep-alive情況下等於active-(reading + writing),表示Nginx已處理完正在等待下一次請求的駐留串連數

650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/9D/91/wKioL1mB-gfRSrWwAABEtKEgGK0599.png" title="6.png" style="float:none;" alt="wKioL1mB-gfRSrWwAABEtKEgGK0599.png" />

6.存取控制

Nginx可以實現基於IP和使用者的認證功能,以status監控頁面為例,我們只允許特定網段的IP來查看監測資料,可以使用allow和deny指令來進行限制

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M00/9D/92/wKiom1mB-gfjAydyAAAM0PdwUF8200.png" title="7.png" style="float:none;" alt="wKiom1mB-gfjAydyAAAM0PdwUF8200.png" />

如果想進一步進行設定,可以通過使用者basic認證的方式,使用htpasswd工具建立一個使用者(也可以直接建立一個系統使用者並將密碼儲存在一個指定檔案中)

650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/9D/91/wKioL1mB-giyYa3QAAAo4_8fT5E346.png" title="8.png" style="float:none;" alt="wKioL1mB-giyYa3QAAAo4_8fT5E346.png" />

然後在設定檔中啟用認證功能

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/9D/92/wKiom1mB-gmw9e5UAAAbvx-ZRSE079.png" title="9.png" style="float:none;" alt="wKiom1mB-gmw9e5UAAAbvx-ZRSE079.png" />

再重新整理頁面,就會發現要求輸入密碼了

650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/9D/91/wKioL1mB-gmgDgC5AAAwzLqs-6s560.png" title="10.png" style="float:none;" alt="wKioL1mB-gmgDgC5AAAwzLqs-6s560.png" />



本文出自 “兔樣兔森破” 部落格,請務必保留此出處http://arkling.blog.51cto.com/2844506/1953165

Nginx學習筆記(二)——搭建Web伺服器

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

Tags Index: