一文詳解Nginx中l(wèi)ocation的使用方法
前情提要:本篇博客介紹了nginx的核心配置模塊中的location部分的詳解,包括location的語法規(guī)則(= ^~ ~ ~* 不帶符號 \)的功能、用法以及詳細(xì)的示例。通過本篇博客可以加深對location的使用的理解。
一、location簡介
1.1 location使用介紹
- 在一個server中l(wèi)ocation配置段可存在多個,用于實現(xiàn)從uri到文件系統(tǒng)的路徑映射;
- ngnix會根據(jù)用戶請求的URI來檢查定義的所有l(wèi)ocation,按一定的優(yōu)先級找出一個最佳匹配,而后應(yīng)用其配置在沒有使用正則表達式的時候,nginx會先在server中的多個location選取匹配度最高的一個uri
- uri是用戶請求的字符串,即域名后面的web文件路徑,然后使用該location模塊中的正則url和字符串,如果匹配成功就結(jié)束搜索,并使用此location處理此請求。
1.2 location語法規(guī)則
# 語法規(guī)則:
location [ = | ~ | ~* | ^~ ] uri { ... }
= #用于標(biāo)準(zhǔn)uri前,需要請求字串與uri精確匹配,大小敏感,如果匹配成功就停止向下匹配并立即處理請求
^~ ? #用于標(biāo)準(zhǔn)uri前,表示包含正則表達式,并且匹配以指定的正則表達式開頭
#對uri的最左邊部分做匹配檢查,不區(qū)分字符大小寫
~ ? #用于標(biāo)準(zhǔn)uri前,表示包含正則表達式,并且區(qū)分大小寫
~* ? #用于標(biāo)準(zhǔn)uri前,表示包含正則表達式,并且不區(qū)分大寫
不帶符號 #匹配起始于此uri的所有的uri
\ ? #用于標(biāo)準(zhǔn)uri前,表示包含正則表達式并且轉(zhuǎn)義字符??梢詫? . * ?等轉(zhuǎn)義為普通符號
#匹配優(yōu)先級從高到低:
=, ^~, ~/~*, 不帶符號二、location后面不加修飾符示例
在server部分使用location配置一個web界面,例如:當(dāng)訪問nginx服務(wù)器的/logo.jpg的時候要顯示指定 HTML文件的內(nèi)容,精確匹配一般用于匹配組織的logo等相對固定的URL,匹配優(yōu)先級最高
[root@Nginx ~]# vim /usr/local/nginx/conf/conf.d/vhost.conf
server {
listen 80;
server_name www.doubledragon.org;
location /null { # 不帶修飾符,代表匹配以/null開頭的所有請求
return 200 "/null-1";
}
}
# 訪問測試
[root@Nginx ~]# curl www.doubledragon.org/null
/null-1
[root@Nginx ~]# curl www.doubledragon.org/null/
/null-1
[root@Nginx ~]# curl www.doubledragon.org/null/1
/null-1
[root@Nginx ~]# curl www.doubledragon.org/null/2
/null-1
[root@Nginx ~]# curl www.doubledragon.org/null1
/null-1
[root@Nginx ~]# curl www.doubledragon.org/null12
/null-1
[root@Nginx ~]# curl www.doubledragon.org/null123
/null-1
# 修改配置文件
server {
listen 80;
server_name www.doubledragon.org;
location /null {
return 200 "/null-1";
}
location /blog/ {
return 200 "/blog/"; # 不帶修飾符,代表匹配/blog/開頭的所有請求
}
}
# 重新測試
[root@Nginx ~]# curl www.doubledragon.org/blog/23
/blog/
[root@Nginx ~]# curl www.doubledragon.org/blog1/23
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.28.2</center>
</body>
</html>
[root@Nginx ~]# curl www.doubledragon.org/blog
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.28.2</center>
</body>
</html>
[root@Nginx ~]# curl www.doubledragon.org/blog/
/blog/三、location后面加 = 示例
# 編輯子配置文件
[root@Nginx ~]# vim /usr/local/nginx/conf/conf.d/vhost.conf
server {
listen 80;
server_name www.doubledragon.org;
location = /login/ {
return 200 "=/login/"; # 精確匹配/login/
}
location = /blog {
return 200 "=/blog"; # 精確匹配/blog
}
}
[root@Nginx ~]# nginx -s reload
# 訪問測試
[root@Nginx ~]# curl www.doubledragon.org/login/
=/login/
[root@Nginx ~]# curl www.doubledragon.org/login
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.28.2</center>
</body>
</html>
[root@Nginx ~]# curl www.doubledragon.org/login1/
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.28.2</center>
</body>
</html>
[root@Nginx ~]# curl www.doubledragon.org/login/1
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.28.2</center>
</body>
</html>
[root@Nginx ~]# curl www.doubledragon.org/blog
=/blog
[root@Nginx ~]# curl www.doubledragon.org/blog/
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.28.2</center>
</body>
</html>
[root@Nginx ~]# curl www.doubledragon.org/blog/1
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.28.2</center>
</body>
</html>
[root@Nginx ~]# curl www.doubledragon.org/blog1
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.28.2</center>
</body>
</html>
四、location后面加 ^~ 示例
# 編輯子配置文件
[root@Nginx ~]# vim /usr/local/nginx/conf/conf.d/vhost.conf
server {
listen 80;
server_name www.doubledragon.org;
location ^~ /doc { # 匹配/doc開頭的,若匹配成功則會阻止正則匹配
return 200 "/doc";
}
location ~* ^/document$ {
return 200 "/document"; # 正則匹配,精確匹配/document
}
}
[root@Nginx ~]# nginx -s reload
# 訪問測試
[root@Nginx ~]# curl www.doubledragon.org/doc
/doc
[root@Nginx ~]# curl www.doubledragon.org/document
/doc
[root@Nginx ~]# curl www.doubledragon.org/doc1
/doc
[root@Nginx ~]# curl www.doubledragon.org/doc/2
/doc
[root@Nginx ~]# curl www.doubledragon.org/do
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.28.2</center>
</body>
</html>
五、location后面加 ~ 示例
# 編輯子配置文件
[root@Nginx ~]# vim /usr/local/nginx/conf/conf.d/vhost.conf
server {
listen 80;
server_name www.doubledragon.org;
location ~ ^/api {
return 200 "^/api"; # 匹配以/api開頭的,區(qū)分大小寫
}
location ~ \.php$ {
return 200 ".php"; # 匹配以.php結(jié)尾的,區(qū)分大小寫
}
}
[root@Nginx ~]# nginx -s reload
# 訪問測試
[root@Nginx ~]# curl www.doubledragon.org/api
^/api
[root@Nginx ~]# curl www.doubledragon.org/apii
^/api
[root@Nginx ~]# curl www.doubledragon.org/api/1
^/api
[root@Nginx ~]# curl www.doubledragon.org/index.php
.php
[root@Nginx ~]# curl www.doubledragon.org/html/index.php
.php
[root@Nginx ~]# curl www.doubledragon.org/api.php
^/api
六、location后面加 ~* 示例
# 編輯子配置文件
[root@Nginx ~]# vim /usr/local/nginx/conf/conf.d/vhost.conf
server {
listen 80;
server_name www.doubledragon.org;
location ~* ^/api {
return 200 "^/api"; # 匹配以/api開頭的,不區(qū)分大小寫
}
}
[root@Nginx ~]# nginx -s reload
# 訪問測試
[root@Nginx ~]# curl www.doubledragon.org/api
^/api
[root@Nginx ~]# curl www.doubledragon.org/API
^/api
[root@Nginx ~]#
綜上,以上就是關(guān)于location的使用的詳細(xì)示例
以上就是一文詳解Nginx中l(wèi)ocation的使用方法的詳細(xì)內(nèi)容,更多關(guān)于Nginx location使用方法的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Nginx 處理超長 Cookie 導(dǎo)致的 400 錯誤
本文主要介紹了Nginx 處理超長 Cookie 導(dǎo)致的 400 錯誤,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04
nginx rewrite重寫規(guī)則與防盜鏈配置方法教程詳解
這篇文章主要介紹了nginx rewrite重寫規(guī)則與防盜鏈配置方法教程詳解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09
Nginx配置統(tǒng)計流量帶寬請求及記錄實時請求狀態(tài)的方法
這篇文章主要介紹了Nginx中配置統(tǒng)計流量帶寬請求及記錄實時請求狀態(tài)的方法,分別用到了ngx_req_status和ngx_realtime_request模塊,需要的朋友可以參考下2016-01-01
Nginx反向代理解決IPv6報錯與跨網(wǎng)段訪問的詳細(xì)步驟
本文檔記錄了如何通過 Nginx 將公網(wǎng)域名請求代理到公司內(nèi)部網(wǎng)絡(luò)服務(wù)的完整過程,重點解決了 IPv6 解析導(dǎo)致的連接超時 問題,并詳細(xì)闡述了 端口映射 與 DNS 解析 的核心原理,需要的朋友可以參考下2026-03-03

