給小白的Nginx30分鐘入門指南(小結(jié))

Nginx是一款輕量級(jí)的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,并在一個(gè)BSD-like 協(xié)議下發(fā)行。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好,中國大陸使用nginx網(wǎng)站用戶有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。

成都創(chuàng)新互聯(lián)專注于順河網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供順河營銷型網(wǎng)站建設(shè),順河網(wǎng)站制作、順河網(wǎng)頁設(shè)計(jì)、順河網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造順河網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供順河網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

為什么要用Nginx?

目前 Nginx 的主力競爭對(duì)手莫過于 Apache ,在這里小編對(duì)兩者做一個(gè)簡單的對(duì)比,幫助大家更好的理解 Nginx 的優(yōu)勢。

1、作為 Web 服務(wù)器:

相比 Apache,Nginx 使用更少的資源,支持更多的并發(fā)連接,體現(xiàn)更高的效率,這點(diǎn)使 Nginx 尤其受到虛擬主機(jī)提供商的歡迎。在高連接并發(fā)的情況下,Nginx是Apache服務(wù)器不錯(cuò)的替代品: Nginx在美國是做虛擬主機(jī)生意的老板們經(jīng)常選擇的軟件平臺(tái)之一,能夠支持高達(dá) 50000 個(gè)并發(fā)連接數(shù)的響應(yīng), 感謝Nginx 為我們選擇了 epoll and kqueue 作為開發(fā)模型。

Nginx作為負(fù)載均衡服務(wù)器: Nginx 既可以在內(nèi)部直接支持 Rails 和 PHP 程序?qū)ν膺M(jìn)行服務(wù), 也可以支持作為 HTTP代理 服務(wù)器對(duì)外進(jìn)行服務(wù)。Nginx采用C進(jìn)行編寫, 不論是系統(tǒng)資源開銷還是CPU使用效率都比 Perlbal 要好很多。

2、Nginx 配置簡潔, Apache 復(fù)雜:

Nginx 啟動(dòng)特別容易, 并且?guī)缀蹩梢宰龅?*24不間斷運(yùn)行,即使運(yùn)行數(shù)個(gè)月也不需要重新啟動(dòng). 你還能夠不間斷服務(wù)的情況下進(jìn)行軟件版本的升級(jí)。

Nginx 靜態(tài)處理性能比 Apache 高 3倍以上,Apache 對(duì) PHP 支持比較簡單,Nginx 需要配合其他后端來使用 ,Apache 的組件比 Nginx 多。

3、最核心的區(qū)別在于:

apache是同步多進(jìn)程模型,一個(gè)連接對(duì)應(yīng)一個(gè)進(jìn)程;nginx是異步的,多個(gè)連接(萬級(jí)別)可以對(duì)應(yīng)一個(gè)進(jìn)程 。

4、兩者的擅長領(lǐng)域分別是:

nginx的優(yōu)勢是處理靜態(tài)請(qǐng)求,cpu內(nèi)存使用率低,apache適合處理動(dòng)態(tài)請(qǐng)求,所以現(xiàn)在一般前端用nginx作為反向代理抗住壓力,apache作為后端處理動(dòng)態(tài)請(qǐng)求。

Nginx 基本使用方法

系統(tǒng)平臺(tái):CentOS release 6.6 (Final) 64位。

一、安裝編譯工具及庫文件

給小白的 Nginx 30分鐘入門指南(小結(jié))

二、首先要安裝 PCRE

1、PCRE 作用是讓 Nginx 支持 Rewrite 功能。下載 PCRE 安裝包,下載地址: http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

給小白的 Nginx 30分鐘入門指南(小結(jié)) 

給小白的 Nginx 30分鐘入門指南(小結(jié)) 

2、解壓安裝包:

給小白的 Nginx 30分鐘入門指南(小結(jié))

3、進(jìn)入安裝包目錄

給小白的 Nginx 30分鐘入門指南(小結(jié))

4、編譯安裝

給小白的 Nginx 30分鐘入門指南(小結(jié))

5、查看pcre版本

給小白的 Nginx 30分鐘入門指南(小結(jié))

給小白的 Nginx 30分鐘入門指南(小結(jié)) 

三、安裝 Nginx

1、下載 Nginx,下載地址:http://nginx.org/download/nginx-1.6.2.tar.gz

給小白的 Nginx 30分鐘入門指南(小結(jié))

給小白的 Nginx 30分鐘入門指南(小結(jié)) 

2、解壓安裝包

給小白的 Nginx 30分鐘入門指南(小結(jié))

3、進(jìn)入安裝包目錄

給小白的 Nginx 30分鐘入門指南(小結(jié))

4、編譯安裝

給小白的 Nginx 30分鐘入門指南(小結(jié))

5、查看nginx版本

給小白的 Nginx 30分鐘入門指南(小結(jié))

給小白的 Nginx 30分鐘入門指南(小結(jié)) 

到此,nginx安裝完成。

四、Nginx 配置

創(chuàng)建 Nginx 運(yùn)行使用的用戶 www:

給小白的 Nginx 30分鐘入門指南(小結(jié))

配置nginx.conf ,將/usr/local/webserver/nginx/conf/nginx.conf替換為以下內(nèi)容

給小白的 Nginx 30分鐘入門指南(小結(jié))

檢查配置文件ngnix.conf的正確性命令:

給小白的 Nginx 30分鐘入門指南(小結(jié))

給小白的 Nginx 30分鐘入門指南(小結(jié)) 

五、啟動(dòng) Nginx

Nginx 啟動(dòng)命令如下:

給小白的 Nginx 30分鐘入門指南(小結(jié))

給小白的 Nginx 30分鐘入門指南(小結(jié))

六、訪問站點(diǎn)

從瀏覽器訪問我們配置的站點(diǎn)ip:

給小白的 Nginx 30分鐘入門指南(小結(jié))

Nginx 常用指令說明

1. main 全局配置

nginx在運(yùn)行時(shí)與具體業(yè)務(wù)功能(比如http服務(wù)或者email服務(wù)代理)無關(guān)的一些參數(shù),比如工作進(jìn)程數(shù),運(yùn)行的身份等。

woker_processes 2
在配置文件的頂級(jí)main部分,worker角色的工作進(jìn)程的個(gè)數(shù),master進(jìn)程是接收并分配請(qǐng)求給worker處理。這個(gè)數(shù)值簡單一點(diǎn)可以設(shè)置為cpu的核數(shù)grep ^processor /proc/cpuinfo | wc -l,也是 auto 值,如果開啟了ssl和gzip更應(yīng)該設(shè)置成與邏輯CPU數(shù)量一樣甚至為2倍,可以減少I/O操作。如果nginx服務(wù)器還有其它服務(wù),可以考慮適當(dāng)減少。

 worker_cpu_affinity
也是寫在main部分。在高并發(fā)情況下,通過設(shè)置cpu粘性來降低由于多CPU核切換造成的寄存器等現(xiàn)場重建帶來的性能損耗。如worker_cpu_affinity 0001 0010 0100 1000; (四核)。

worker_connections 2048
寫在events部分。每一個(gè)worker進(jìn)程能并發(fā)處理(發(fā)起)的最大連接數(shù)(包含與客戶端或后端被代理服務(wù)器間等所有連接數(shù))。nginx作為反向代理服務(wù)器,計(jì)算公式 最大連接數(shù) = worker_processes * worker_connections/4,所以這里客戶端最大連接數(shù)是1024,這個(gè)可以增到到8192都沒關(guān)系,看情況而定,但不能超過后面的worker_rlimit_nofile。當(dāng)nginx作為http服務(wù)器時(shí),計(jì)算公式里面是除以2。

worker_rlimit_nofile 10240
寫在main部分。默認(rèn)是沒有設(shè)置,可以限制為操作系統(tǒng)最大的限制65535。

 use epoll
寫在events部分。在Linux操作系統(tǒng)下,nginx默認(rèn)使用epoll事件模型,得益于此,nginx在Linux操作系統(tǒng)下效率相當(dāng)高。同時(shí)Nginx在OpenBSD或FreeBSD操作系統(tǒng)上采用類似于epoll的高效事件模型kqueue。在操作系統(tǒng)不支持這些高效模型時(shí)才使用select。

2. http服務(wù)器

與提供http服務(wù)相關(guān)的一些配置參數(shù)。例如:是否使用keepalive啊,是否使用gzip進(jìn)行壓縮等。

sendfile on
開啟高效文件傳輸模式,sendfile指令指定nginx是否調(diào)用sendfile函數(shù)來輸出文件,減少用戶空間到內(nèi)核空間的上下文切換。對(duì)于普通應(yīng)用設(shè)為 on,如果用來進(jìn)行下載等應(yīng)用磁盤IO重負(fù)載應(yīng)用,可設(shè)置為off,以平衡磁盤與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的負(fù)載。

 keepalive_timeout 65 : 長連接超時(shí)時(shí)間,單位是秒,這個(gè)參數(shù)很敏感,涉及瀏覽器的種類、后端服務(wù)器的超時(shí)設(shè)置、操作系統(tǒng)的設(shè)置,可以另外起一片文章了。長連接請(qǐng)求大量小文件的時(shí)候,可以減少重建連接的開銷,但假如有大文件上傳,65s內(nèi)沒上傳完成會(huì)導(dǎo)致失敗。如果設(shè)置時(shí)間過長,用戶又多,長時(shí)間保持連接會(huì)占用大量資源。

 send_timeout :用于指定響應(yīng)客戶端的超時(shí)時(shí)間。這個(gè)超時(shí)僅限于兩個(gè)連接活動(dòng)之間的時(shí)間,如果超過這個(gè)時(shí)間,客戶端沒有任何活動(dòng),Nginx將會(huì)關(guān)閉連接。

 client_max_body_size 10m
允許客戶端請(qǐng)求的最大單文件字節(jié)數(shù)。如果有上傳較大文件,請(qǐng)?jiān)O(shè)置它的限制值

 client_body_buffer_size 128k
緩沖區(qū)代理緩沖用戶端請(qǐng)求的最大字節(jié)數(shù)

模塊http_proxy:

這個(gè)模塊實(shí)現(xiàn)的是nginx作為反向代理服務(wù)器的功能,包括緩存功能(另見文章)

proxy_connect_timeout 60
nginx跟后端服務(wù)器連接超時(shí)時(shí)間(代理連接超時(shí))

proxy_read_timeout 60
連接成功后,與后端服務(wù)器兩個(gè)成功的響應(yīng)操作之間超時(shí)時(shí)間(代理接收超時(shí))

proxy_buffer_size 4k
設(shè)置代理服務(wù)器(nginx)從后端realserver讀取并保存用戶頭信息的緩沖區(qū)大小,默認(rèn)與proxy_buffers大小相同,其實(shí)可以將這個(gè)指令值設(shè)的小一點(diǎn)

proxy_buffers 4 32k
proxy_buffers緩沖區(qū),nginx針對(duì)單個(gè)連接緩存來自后端realserver的響應(yīng),網(wǎng)頁平均在32k以下的話,這樣設(shè)置

proxy_busy_buffers_size 64k
高負(fù)荷下緩沖大小(proxy_buffers*2)

proxy_max_temp_file_size
當(dāng)proxy_buffers放不下后端服務(wù)器的響應(yīng)內(nèi)容時(shí),會(huì)將一部分保存到硬盤的臨時(shí)文件中,這個(gè)值用來設(shè)置最大臨時(shí)文件大小,默認(rèn)1024M,它與proxy_cache沒有關(guān)系。大于這個(gè)值,將從upstream服務(wù)器傳回。設(shè)置為0禁用。

proxy_temp_file_write_size 64k
當(dāng)緩存被代理的服務(wù)器響應(yīng)到臨時(shí)文件時(shí),這個(gè)選項(xiàng)限制每次寫臨時(shí)文件的大小。proxy_temp_path(可以在編譯的時(shí)候)指定寫到哪那個(gè)目錄。

proxy_pass,proxy_redirect見 location 部分。

模塊http_gzip:

gzip on : 開啟gzip壓縮輸出,減少網(wǎng)絡(luò)傳輸。

  1.  gzip_min_length 1k : 設(shè)置允許壓縮的頁面最小字節(jié)數(shù),頁面字節(jié)數(shù)從header頭得content-length中進(jìn)行獲取。默認(rèn)值是20。建議設(shè)置成大于1k的字節(jié)數(shù),小于1k可能會(huì)越壓越大。
  2. gzip_buffers 4 16k : 設(shè)置系統(tǒng)獲取幾個(gè)單位的緩存用于存儲(chǔ)gzip的壓縮結(jié)果數(shù)據(jù)流。4 16k代表以16k為單位,安裝原始數(shù)據(jù)大小以16k為單位的4倍申請(qǐng)內(nèi)存。
  3. gzip_http_version 1.0 : 用于識(shí)別 http 協(xié)議的版本,早期的瀏覽器不支持 Gzip 壓縮,用戶就會(huì)看到亂碼,所以為了支持前期版本加上了這個(gè)選項(xiàng),如果你用了 Nginx 的反向代理并期望也啟用 Gzip 壓縮的話,由于末端通信是 http/1.0,故請(qǐng)?jiān)O(shè)置為 1.0。
  4. gzip_comp_level 6 : gzip壓縮比,1壓縮比最小處理速度最快,9壓縮比最大但處理速度最慢(傳輸快但比較消耗cpu)
  5. gzip_types :匹配mime類型進(jìn)行壓縮,無論是否指定,”text/html”類型總是會(huì)被壓縮的。
  6. gzip_proxied any : Nginx作為反向代理的時(shí)候啟用,決定開啟或者關(guān)閉后端服務(wù)器返回的結(jié)果是否壓縮,匹配的前提是后端服務(wù)器必須要返回包含”Via”的 header頭。
  7. gzip_vary on : 和http頭有關(guān)系,會(huì)在響應(yīng)頭加個(gè) Vary: Accept-Encoding ,可以讓前端的緩存服務(wù)器緩存經(jīng)過gzip壓縮的頁面,例如,用Squid緩存經(jīng)過Nginx壓縮的數(shù)據(jù)。

 3. server虛擬主機(jī)

http服務(wù)上支持若干虛擬主機(jī)。每個(gè)虛擬主機(jī)一個(gè)對(duì)應(yīng)的server配置項(xiàng),配置項(xiàng)里面包含該虛擬主機(jī)相關(guān)的配置。在提供mail服務(wù)的代理時(shí),也可以建立若干server。每個(gè)server通過監(jiān)聽地址或端口來區(qū)分。

listen
監(jiān)聽端口,默認(rèn)80,小于1024的要以root啟動(dòng)。可以為listen *:80、listen 127.0.0.1:80等形式。

server_name
服務(wù)器名,如localhost、www.example.com,可以通過正則匹配。

模塊http_stream

這個(gè)模塊通過一個(gè)簡單的調(diào)度算法來實(shí)現(xiàn)客戶端IP到后端服務(wù)器的負(fù)載均衡,upstream后接負(fù)載均衡器的名字,后端realserver以 host:port options; 方式組織在 {} 中。如果后端被代理的只有一臺(tái),也可以直接寫在 proxy_pass 。

4. location

http服務(wù)中,某些特定的URL對(duì)應(yīng)的一系列配置項(xiàng)。

root /var/www/html
定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置。如果locationURL匹配的是子目錄或文件,root沒什么作用,一般放在server指令里面或/下。

index index.jsp index.html index.htm
定義路徑下默認(rèn)訪問的文件名,一般跟著root放

proxy_pass http:/backend
請(qǐng)求轉(zhuǎn)向backend定義的服務(wù)器列表,即反向代理,對(duì)應(yīng)upstream負(fù)載均衡器。也可以proxy_pass http://ip:port。

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

這四個(gè)暫且這樣設(shè),如果深究的話,每一個(gè)都涉及到很復(fù)雜的內(nèi)容,也將通過另一篇文章來解讀。

關(guān)于location匹配規(guī)則的寫法,可以說尤為關(guān)鍵且基礎(chǔ)的,參考文章 nginx配置location總結(jié)及rewrite規(guī)則寫法;

5. 其它

5.1 訪問控制 allow/deny

Nginx 的訪問控制模塊默認(rèn)就會(huì)安裝,而且寫法也非常簡單,可以分別有多個(gè)allow,deny,允許或禁止某個(gè)ip或ip段訪問,依次滿足任何一個(gè)規(guī)則就停止往下匹配。如:

給小白的 Nginx 30分鐘入門指南(小結(jié))

我們也常用 httpd-devel 工具的 htpasswd 來為訪問的路徑設(shè)置登錄密碼:

給小白的 Nginx 30分鐘入門指南(小結(jié))

這樣就生成了默認(rèn)使用CRYPT加密的密碼文件。打開上面nginx-status的兩行注釋,重啟nginx生效。

5.2 列出目錄 autoindex

Nginx默認(rèn)是不允許列出整個(gè)目錄的。如需此功能,打開nginx.conf文件,在location,server 或 http段中加入autoindex on;,另外兩個(gè)參數(shù)最好也加上去:

  1. autoindex_exact_size off; 默認(rèn)為on,顯示出文件的確切大小,單位是bytes。改為off后,顯示出文件的大概大小,單位是kB或者M(jìn)B或者GB autoindex_localtime on;
  2. 默認(rèn)為off,顯示的文件時(shí)間為GMT時(shí)間。改為on后,顯示的文件時(shí)間為文件的服務(wù)器時(shí)間

給小白的 Nginx 30分鐘入門指南(小結(jié))

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

分享題目:給小白的Nginx30分鐘入門指南(小結(jié))
網(wǎng)頁地址:http://muchs.cn/article30/ghoopo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、用戶體驗(yàn)、營銷型網(wǎng)站建設(shè)、、小程序開發(fā)、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司