詳解nginx?location指令
location 介紹 location是Nginx中的塊級(jí)指令(block directive),,location指令的功能是用來(lái)匹配不同的url請(qǐng)求,進(jìn)而對(duì)請(qǐng)求做不同的處理和響應(yīng),這其中較難理解的是多個(gè)location的匹配順序,本文會(huì)作為重點(diǎn)來(lái)解釋和說(shuō)明。 開(kāi)始之前先明確一些約定,我們輸入的網(wǎng)址叫做請(qǐng)求URI,nginx用請(qǐng)求URI與location中配置的URI做匹配。
Nginx的HTTP配置主要包括三個(gè)區(qū)塊,結(jié)構(gòu)如下:
http { //這個(gè)是協(xié)議級(jí)別
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
gzip on;
server { //這個(gè)是服務(wù)器級(jí)別
listen 80;
server_name localhost;
location / { //這個(gè)是請(qǐng)求級(jí)別
root html;
index index.html index.htm;
}
}
}location區(qū)段
通過(guò)指定模式來(lái)與客戶端請(qǐng)求的URI相匹配,基本語(yǔ)法如下:location [=|~|~*|^~|@] pattern{……}
1、沒(méi)有修飾符 表示:必須以指定模式開(kāi)始,如:
server {
server_name baidu.com;
location /abc {
……
}
}
那么,如下是對(duì)的:http://baidu.com/abchttp://baidu.com/abc?p1http://baidu.com/abc/http://baidu.com/abcde那么,如下是對(duì)的:
http://baidu.com/abc
http://baidu.com/abc?p1
http://baidu.com/abc/
http://baidu.com/abcde
2、=表示:必須與指定的模式精確匹配
server {
server_name sish
location = /abc {
……
}
}
那么,如下是對(duì)的:
http://baidu.com/abc
http://baidu.com/abc?p1
如下是錯(cuò)的:
http://baidu.com/abc/
http://baidu.com/abcde3、~ 表示:指定的正則表達(dá)式要區(qū)分大小寫
server {
server_name baidu.com;
location ~ ^/abc$ {
……
}
}
那么,如下是對(duì)的:
http://baidu.com/abc
http://baidu.com/abc?p1=11&p2=22
如下是錯(cuò)的:
http://baidu.com/ABC
http://baidu.com/abc/
http://baidu.com/abcde4、~* 表示:指定的正則表達(dá)式不區(qū)分大小寫
server {
server_name baidu.com;
location ~* ^/abc$ {
……
}
}
那么,如下是對(duì)的:
http://baidu.com/abc
http://baidu..com/ABC
http://baidu..com/abc?p1=11&p2=22
如下是錯(cuò)的:
http://baidu..com/abc/
http://baidu..com/abcde5、^~ 類似于無(wú)修飾符的行為,也是以指定模式開(kāi)始,不同的是,如果模式匹配,
那么就停止搜索其他模式了。
6、@ :定義命名location區(qū)段,這些區(qū)段客戶段不能訪問(wèn),只可以由內(nèi)部產(chǎn)生的請(qǐng)
求來(lái)訪問(wèn),如try_files或error_page等
查找順序和優(yōu)先級(jí)
1:帶有“=“的精確匹配優(yōu)先
2:沒(méi)有修飾符的精確匹配
3:正則表達(dá)式按照他們?cè)谂渲梦募卸x的順序
4:帶有“^~”修飾符的,開(kāi)頭匹配
5:帶有“~” 或“~*” 修飾符的,如果正則表達(dá)式與URI匹配
6:沒(méi)有修飾符的,如果指定字符串與URI開(kāi)頭匹配
Location區(qū)段匹配示例location = / {
# 只匹配 / 的查詢.
[ configuration A ]
}
location / {
# 匹配任何以 / 開(kāi)始的查詢,但是正則表達(dá)式與一些較長(zhǎng)的字符串將被首先匹配。
[ configuration B ]
}
location ^~ /images/ {
# 匹配任何以 /images/ 開(kāi)始的查詢并且停止搜索,不檢查正則表達(dá)式。
[ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配任何以gif, jpg, or jpeg結(jié)尾的文件,但是所有 /images/ 目錄的請(qǐng)求將在Configuration C中處
理。
[ configuration D ]
} 各
請(qǐng)求的處理如下例:
■/ → configuration A
■/documents/document.html → configuration B
■/images/1.gif → configuration C
■/documents/1.jpg → configuration Droot 、alias指令區(qū)別
location /img/ {
alias /var/www/image/;
}#若按照上述配置的話,則訪問(wèn)/img/目錄里面的文件時(shí),ningx會(huì)自動(dòng)去/var/www/image/目錄找文件
location /img/ {
root /var/www/image;
}alias是一個(gè)目錄別名的定義,root則是最上層目錄的定義。
還有一個(gè)重要的區(qū)別是alias后面必須要用“/”結(jié)束,否則會(huì)找不到文件的。。。而root則可有可無(wú)~~
到此這篇關(guān)于nginx location指令詳解的文章就介紹到這了,更多相關(guān)nginx location指令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
內(nèi)網(wǎng)環(huán)境nginx配置https訪問(wèn)的過(guò)程詳解
這篇文章主要介紹了內(nèi)網(wǎng)環(huán)境nginx配置https訪問(wèn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
詳解如何通過(guò)nginx進(jìn)行服務(wù)的負(fù)載均衡
負(fù)載均衡器可以將用戶請(qǐng)求根據(jù)對(duì)應(yīng)的負(fù)載均衡算法分發(fā)到應(yīng)用集群中的一臺(tái)服務(wù)器進(jìn)行處理,本文主要為大家詳細(xì)介紹了如何通過(guò)nginx進(jìn)行服務(wù)的負(fù)載均衡,需要的可以參考下2023-11-11
nginx中的正則表達(dá)式及l(fā)ocation和rewrite總結(jié)
rewrite功能就是,使用nginx提供的全局變量或自己設(shè)置的變量,結(jié)合正則表達(dá)式和標(biāo)記位實(shí)現(xiàn)URL重寫以及重定向,這篇文章主要介紹了nginx中的正則表達(dá)式及l(fā)ocation和rewrite總結(jié),需要的朋友可以參考下2023-12-12
Nginx實(shí)現(xiàn)基于請(qǐng)求頭的訪問(wèn)控制配置的示例
在Nginx中,可以使用"allow"和"deny"指令來(lái)實(shí)現(xiàn)IP訪問(wèn)限制,本文給大家介紹Nginx實(shí)現(xiàn)基于請(qǐng)求頭的訪問(wèn)控制配置,感興趣的朋友一起看看吧2023-11-11
nginx 不同的訪問(wèn)路徑對(duì)應(yīng)項(xiàng)目不同的目錄的實(shí)現(xiàn)方法
要在 Nginx 中配置不同的訪問(wèn)路徑對(duì)應(yīng)不同的項(xiàng)目目錄,可以使用 Nginx 的?location?指令來(lái)實(shí)現(xiàn),本文主要介紹了nginx不同的訪問(wèn)路徑對(duì)應(yīng)項(xiàng)目不同的目錄的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
nginx 配置location匹配規(guī)則實(shí)例講解
在本篇文章里小編給大家整理的是關(guān)于nginx 配置location匹配規(guī)則實(shí)例講解內(nèi)容,需要的朋友們學(xué)習(xí)下。2020-03-03

