当前位置: 代码网 > it编程>数据库>Mysql > 一文详解Nginx中location的使用方法

一文详解Nginx中location的使用方法

2026年04月02日 Mysql 我要评论
前情提要:本篇博客介绍了nginx的核心配置模块中的location部分的详解,包括location的语法规则(= ^~ ~ ~* 不带符号 \)的功能、用法以及详细的示例。通过本篇博客可以加深对lo

前情提要:本篇博客介绍了nginx的核心配置模块中的location部分的详解,包括location的语法规则(=  ^~  ~  ~*  不带符号  \)的功能、用法以及详细的示例。通过本篇博客可以加深对location的使用的理解。

一、location简介

1.1 location使用介绍

  • 在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;
  • ngnix会根据用户请求的uri来检查定义的所有location,按一定的优先级找出一个最佳匹配,而后应用其配置在没有使用正则表达式的时候,nginx会先在server中的多个location选取匹配度最高的一个uri
  • uri是用户请求的字符串,即域名后面的web文件路径,然后使用该location模块中的正则url和字符串,如果匹配成功就结束搜索,并使用此location处理此请求。

1.2 location语法规则

# 语法规则:
location [ = | ~ | ~* | ^~ ] uri { ... }
=           #用于标准uri前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立即处理请求
^~          #用于标准uri前,表示包含正则表达式,并且匹配以指定的正则表达式开头
			#对uri的最左边部分做匹配检查,不区分字符大小写
~           #用于标准uri前,表示包含正则表达式,并且区分大小写
~*          #用于标准uri前,表示包含正则表达式,并且不区分大写
不带符号	 #匹配起始于此uri的所有的uri
\            #用于标准uri前,表示包含正则表达式并且转义字符。可以将  . * ?等转义为普通符号
#匹配优先级从高到低:
=, ^~, ~/~*, 不带符号

二、location后面不加修饰符示例

在server部分使用location配置一个web界面,例如:当访问nginx服务器的/logo.jpg的时候要显示指定 html文件的内容,精确匹配一般用于匹配组织的logo等相对固定的url,匹配优先级最高

[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开头的,区分大小写
        }       

        location ~ \.php$ {
                return 200 ".php";		# 匹配以.php结尾的,区分大小写
        }       
}

[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开头的,不区分大小写
        }
}

[root@nginx ~]# nginx -s reload

# 访问测试
[root@nginx ~]# curl www.doubledragon.org/api
^/api
[root@nginx ~]# curl www.doubledragon.org/api
^/api
[root@nginx ~]# 

综上,以上就是关于location的使用的详细示例

以上就是一文详解nginx中location的使用方法的详细内容,更多关于nginx location使用方法的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com