摘要:改為后,顯示出文件的大概大小,單位是或者或者默認為,顯示的文件時間為時間。
這是 Nginx 學習總結的第三篇,上一篇介紹到了 Nginx 學習總結(2) —— 基本配置,這一篇會對Location 模塊 做一些總結。我們知道,Location 模塊 主要是用于針對某些特定的 URL 進行配置,可以由前綴字符串定義,也可以由正則表達式定義。
Location 匹配規則location = /test.png { # 精確匹配 [ configuration A ] } location / { # 通用匹配,但是正則表達式和最長字符串會優先被匹配 [ configuration B ] } location /documents/ { # 前綴字符串匹配 # 匹配任何以 /documents/ 開頭的請求 # 只有后面的正則表達式沒有匹配到時,該配置才會被采用 [ configuration C ] } location ^~ /images/ { # 前綴字符串匹配 # 匹配任何以 /images/ 開頭的請求,匹配成功以后,會停止搜索后面的正則表達式匹配 [ configuration D ] } location ~* .(gif|jpg|jpeg)$ { # 正則表達式匹配,匹配所有以 gif,jpg,jpeg 結尾的請求 # 然而,所有請求 /images/ 下的圖片會被 configuration D 處理,因為 ^~ 指令,匹配不到這一條規則 [ configuration E ] } location /images/abc/ { # 前綴字符串匹配 # 只有去掉 configuration D 才能被匹配到 [ configuration F ] }
= 精確匹配;
^~ 提高前綴字符串的匹配優先級;
~ 區分大小寫的正則表達式匹配;
~* 不區分大小寫的正則表達式匹配;
/ 通用匹配(因為所有的地址都以 / 開頭,所以這條規則將匹配到所有請求),如果沒有其它匹配,任何請求都會匹配到。
默認情況, Nginx 先進行前綴字符串匹配,然后進行正則表達式匹配:如果前綴字符串匹配到了,并且前綴字符串有^~ ,就不繼續往下匹配正則表達式;如果沒有這個^~ ,即使前綴匹配到了,也要進行正則表則式匹配,如果正則表達式匹配到了,就是用正則表達式的,沒有就是用前綴字符串匹配到的路徑??偨Y如下:
匹配優先級:精確匹配 >(^~) > 正則匹配 > 字符串(長 > 短)Location 配置應用
# 第一個必選規則 # 直接匹配網站根目錄,通過域名訪問網站首頁比較頻繁,使用這個會加速處理,比如官網首頁 location = / { root /usr/share/nginx/html; index index.php index.html index.htm; } # 第二個必選規則 # 處理靜態文件請求,有兩種配置模式,目錄匹配或后綴匹配,任選其一或搭配使用 location ~* .(gif|jpg|jpeg|png|css|js|ico)$ { expires 7d; # 用來設置 HTTP 應答中的 Expires 和 Cache-Control 的頭標時間,來告訴瀏覽器訪問這個靜態文件時,不用再去請求服務器,直接從本地緩存讀取就可以了 } location ^~ /public/ { root /usr/share/nginx/html/laravel/public; expires 7d; } # 第三個必選規則 # 用來轉發動態請求到后端應用服務器 location / { root /usr/share/nginx/html; index index.php index.html index.htm; }
有時,需要將原來的 URL 請求跳轉到新的 URL 鏈接,但又不想使原來的 URL 失效,比如訪問 http://jochen.com/test 時,需要跳轉到 http://jochen.com/ ,此時可以配置一個跳轉:
location = /test/ { return 302 http://jochen.com/; }
有時,我們需要對訪問做一些限制。比如,Nginx 的 ngx_http_stub_status_module 模塊(該模塊不是默認安裝的,可以使用 --with-http_stub_status_module 編譯安裝)提供了查看 Nginx 運行的基本狀態信息,我們只想讓部分 IP 的人可以查看,此時可以配置一個訪問控制:
location /nginx-status { # 在1.7.5版本之前,使用 stub_status on; 指令 stub_status; allow 127.0.0.1; allow 192.168.4.220; deny all; }
Nginx 默認是不允許列出整個目錄的。如需此功能,我們可以通過一下配置開啟:
location / { root /usr/share/nginx/html; autoindex on; # 開啟目錄自動索引 autoindex_exact_size off; # 默認為on,顯示出文件的確切大小,單位是bytes。改為off后,顯示出文件的大概大小,單位是kB或者MB或者GB autoindex_localtime on; # 默認為off,顯示的文件時間為GMT時間。改為on后,顯示的文件時間為文件的服務器時間 }
參考文章
nginx 服務器安裝及配置文件詳解
前端工程師學習 Nginx 入門篇
Module ngx_http_stub_status_module
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/39851.html
摘要:根據官方文檔說明,模塊是用于使用正則表達式更改請求,有條件地選擇配置,并返回重定向。指令停止執行模塊的指令集,但是其他模塊指令不受影響??梢允褂脴酥緛斫K止指令的進一步處理。 這是 Nginx 學習總結的第四篇,上一篇介紹到了 Nginx 學習總結(3) —— Location 模塊,這一篇會對Rewrite模塊 做一些總結。根據官方文檔說明,Rewrite 模塊是用于使用 PCRE 正...
摘要:配置信息主要分為六大部分全局設置事件設置服務器設置虛擬主機設置匹配設置反向代理設置。最大客戶端連接數由和決定作為服務器時,作為反向代理時,。參考文章服務器安裝及配置文件詳解的配置虛擬主機負載均衡和反向代理 這是 Nginx 學習總結的第二篇,上一篇介紹到了 Nginx 學習總結(1) —— 概述,這一篇會對 Nginx 的基本配置做一些總結。 Nginx 配置信息主要分為六大部分: m...
摘要:實現負載均衡負載均衡是反向代理技術的一種運用。而實現負載均衡的核心在于如何將請求合理地分配給不同的后端服務器。 這是 Nginx 學習總結的第六篇,上一篇介紹到了 Nginx 學習總結(5) —— 反向代理,本文主要演示結合 proxy 和 upstream 模塊的使用來實現 Nginx 的負載均衡。 Nginx 官網中對 upstream 模塊的介紹:ngx_http_upstrea...
摘要:代理請求當代理請求時,它會將請求發送到指定的代理服務器,獲取響應并將其發送回客戶端。是否啟用緩沖使用指令,默認是開啟的。 這是 Nginx 學習總結的第五篇,上一篇介紹到了 Nginx 學習總結(4)—— Rewrite 模塊,這一篇會對 反向代理 相關知識做一些總結。 什么是代理?代理通常用于在多個服務器之間分配負載,無縫地顯示來自不同網站的內容,或通過除 HTTP 以外的協議將請求...
摘要:本文將從源碼從此深入分析配置文件的解析,配置存儲,與配置查找。在學習配置文件的解析過程之前,需要先了解一下模塊與指令的一些基本知識。 運營研發團隊 李樂 配置文件是nginx的基礎,對于學習nginx源碼甚至開發nginx模塊的同學來說更是必須深究。本文將從源碼從此深入分析nginx配置文件的解析,配置存儲,與配置查找。 看本文之前讀者可以先思考兩個問題: 1.nginx源碼中隨處可以...
閱讀 3494·2021-11-18 10:02
閱讀 1624·2021-10-12 10:12
閱讀 3008·2021-10-09 09:53
閱讀 4904·2021-09-09 09:34
閱讀 886·2021-09-06 15:02
閱讀 2789·2021-08-05 10:02
閱讀 3149·2019-08-30 15:44
閱讀 3133·2019-08-28 18:04