小試牛刀!Nginx 搭建靜態資源服務器

今天,來小試牛刀- 使用Nginx 搭建靜態資源Web服務器,給你們分享一下全過程。css

至於什麼是Nginx?Nginx 安裝、配置,這樣就再也不過多的贅述了,廢話很少說,直奔主題。html

前期準備

準備一個web靜態資源(我用的是以前學習的webgl的例子),先來看看怎麼配置nginx:nginx

圖片

首先配置listen指令,監聽8000端口。接着配置一個location指令塊,/表示全部請求,而後配置/後的路由與請求目錄下的路徑要一致,這時有兩種使用方法,alias是其中一種。web

listen:請求進入nginx前,首先須要監聽端口使得nginx與客戶端創建一個tcp連接。listen指令就是用來監聽端口的,處於server指令塊內的。經過監聽的端口與地址就能判斷使用哪些server去處理請求。json

listen指令值主要分爲三種類型:瀏覽器

  • address[:port]-監聽一個地址或者加相應的端口。好比listen 127.0.0.1:8000
  • port-監聽一個端口。好比listen 8000
  • unix:path-監聽一個unix socket地址,只用於本機通信。好比unix:/var/run/nginx.sock

而後使用命令重載nginxnginx -s reload,這時訪問localhost:8000就能看到效果了 root與alias:這兩個指令主要功能都是將url映射爲文件路徑,以返回靜態文件內容。主要的差異在於:服務器

root有一個默認值html,能夠出如今http、server和location指令塊內,而且會將完整的url映射進文件路徑中 alias沒有默認值,只能出如今location指令塊中,而且只會將location後的url映射到文件路徑 舉例說明:網絡

location /root {    
root html
}

location /alias {  
  alias html
  }

當訪問localhost/root/時,根據配置的指令值,會在html後加上/root再去訪問index.html。因此實際訪問的路由地址爲localhost/html/root/index.html。這是由於root會將完整的url映射進文件路徑中。socket

而訪問localhost/alias/時,訪問的路由地址爲localhost/html/index.html。tcp

使用gzip壓縮來減小網絡傳輸

當訪問的資源很大時,每每會消耗大量的寬帶,也增長加載時間。nginx能夠設置靜態資源的壓縮功能。

圖片

gzip on
#表示打開gzip功能開關
gzip_min_length 1
#表示gzip最小壓縮字節大小,若是一個文件很小,在一個tcp報文就能發送出來,這時再進行壓縮效果不太,卻又消耗cpu。(我這是爲了演示才設置爲1)
gzip_comp_level 2
#表示壓縮級別
gzip_types
#表示只對列出來的類型進行壓縮

圖片

壓縮後只有830kb,並且在響應頭中也能看出使用了gzip壓縮

圖片

使用autoindex

使用autoindex能夠將一個目錄信息分享給用戶,用戶根據本身需求打開對應目錄。

圖片

在文檔中介紹到,當訪問/結尾的url時,會對應到這個目錄並展現這個目錄的結構。使用方法就是把autoindex置爲on 訪問css/這個文件夾時:

圖片

這裏須要提出一點的是,會有一些狀況:開啓了autoindex後,仍是不會返回目錄結構。多是由於配置index指令,index指令優先級會大於autoindex指令。具體以下:

index:當訪問/時會返回index指令的文件內容。index file,默認值是index.html,能夠出如今http、server和location指令塊中。
autoindex:當url以/結尾時,嘗試以html/xml/json等格式返回root/alias中指向目錄的目錄結構

限制訪問速度

由於公網帶寬是有限的,當有許多用戶同時訪問時,他們是一個加強關係。這時可能須要用戶訪問一些大文件時限制訪問速度,以確保能有足夠的帶寬使得其餘用戶可以訪問一些例如css,js等基礎文件。這時能夠設置set的命令配合一些內置變量來實現這一個功能。好比說

set $limit_rate 1k;

限制服務器向瀏覽器發送響應的速度。$limit_rate這個變量能夠在官網的ngx_http_core_module模塊中的Embedded Variables中

圖片

用法就是變量後面加上一個以空間爲單位的數字,表示每秒傳輸多少字節。加上限制以後,會發現訪問速度有變化。

記錄access日誌

日誌要顯示什麼內容,就要看要設置什麼樣的格式。使用log_format指令定義日誌的格式。

圖片

log\_format格式容許設置一個名字,這就能夠對不一樣用途時記錄不一樣格式的日誌文件。如圖所示,設置爲名爲main的日誌格式。這個格式使用了不少內置變量:

$remote_addr:表示遠端的ip地址,也就是瀏覽器的ip地址
$remote_user:表示用戶名提供基自己份驗證
$time_local:表示訪問時間
$request:完整的原始請求行
$status:表示響應狀態
$body_bytes_sent:發送給客戶端的body字節數
$http_referer:表示從哪跳轉過來
$http_user_agent:用戶瀏覽器的類別,版本以及操做系統的一些信息
$http_x_forwarded_for:客戶端請求頭中的"X-Forwarded-For"

設置完log_format以後,就要去設置日誌記錄的地方。使用access_log指令。

access_log所在哪一個server塊中,就表示這類請求的日誌都記錄在access_log設置的地方;

server {    
    ...    
    access_log logs/access.log main;
} 

表示將這個server的請求記錄在logs的access.log文件中,採用main的記錄格式

以上就是通使用Nginx來搭建一個靜態WEB資源服務器的全過程,很是簡單,可是,很是實用。

內容摘自:https://blog.csdn.net/hugo233...

相關文章
相關標籤/搜索