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

背景介紹html

Nginx自誕生起就採用了2.6之後內核所支持的epoll模型進而使得處理效率大幅提高而受到了廣大用戶的青睞,但就Web服務來說,Nginx所擁有的功能Apache均可以實現,但反過來確不行,這就是大多數場景時使用Nginx做爲反向代理而不能取代Apache的緣由。本文以Nginx_1.12.1版本爲例,介紹Nginx充當Web服務器時的配置及用法。linux

軟件安裝nginx

儘管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。socket

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

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指令引用局部配置段。

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段定義

wKiom1mB-gWQIB-tAAAKzT2MDcA820.png

server段相似於Apache中的virtualhost段,一個http段中能夠有多個server段偵聽在不一樣的套接字上,listen爲偵聽的端口,若是但願偵聽在其餘套接字上能夠在listen後面經過IP:Port的方式設置;server_name設置服務的主機名,主機名能夠有多個,而且支持通配符和正則表達式(~),優先順序爲:

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

(2)左側通配符匹配:*.contoso.com;

(3)右側通配符匹配:www.contoso.*;

(4)正則表達式:~^.*\.contoso\.com$; 

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

2.location段定義

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進行路徑別名設置

wKiom1mB-gbh8HRwAAANuSiNfkM973.png

與root表示啓示位置不一樣,alias至關於路徑的別名,結合上圖,location中alias目錄所在的爲/var/www/alias,而/alias目錄自己能夠在文件系統上不存在。

5.狀態監測

Nginx提供了一個狀態監測的模塊,編譯時使用--with-http_stub_status_module選項進行開啓,並在配置文件中進行設置設置

wKiom1mB-gbTbGhRAAAHUuy7WLU647.png

經過瀏覽器能夠查看監測數據,Active connections表示當前全部打開狀態的鏈接數;accept表示處理的鏈接數,handle成功建立的握手數,每一個鏈接能夠包含多個請求,requests表示處理的請求數。reading表示讀取到客戶端的header信息數,writing表示返回給客戶端header的信息數,waiting的數值在開啓keep-alive狀況下等於active-(reading + writing),表示Nginx已處理完正在等待下一次請求的駐留鏈接數

wKioL1mB-gfRSrWwAABEtKEgGK0599.png

6.訪問控制

Nginx能夠實現基於IP和用戶的認證功能,以status監控頁面爲例,咱們只容許特定網段的IP來查看監測數據,可使用allow和deny指令來進行限制

wKiom1mB-gfjAydyAAAM0PdwUF8200.png

若是想進一步進行設置,能夠經過用戶basic認證的方式,使用htpasswd工具建立一個用戶(也能夠直接建立一個系統用戶並將密碼保存在一個指定文件中)

wKioL1mB-giyYa3QAAAo4_8fT5E346.png

而後在配置文件中啓用認證功能

wKiom1mB-gmw9e5UAAAbvx-ZRSE079.png

再刷新頁面,就會發現須要密碼了

wKioL1mB-gmgDgC5AAAwzLqs-6s560.png

相關文章
相關標籤/搜索