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

 更新时间:2026年04月02日 09:11:30   作者:两只龙宝  
本篇博客介绍了nginx的核心配置模块中的location部分的详解,包括location的语法规则(=  ^~  ~  ~*  不带符号  \)的功能、用法以及详细的示例,通过本篇博客可以加深对location的使用的理解,需要的朋友可以参考下

前情提要:本篇博客介绍了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使用方法的资料请关注脚本之家其它相关文章!

相关文章

  • nginx反向代理文件下载失败问题及解决

    nginx反向代理文件下载失败问题及解决

    这篇文章主要介绍了nginx反向代理文件下载失败问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Nginx正向代理实现局域网电脑访问外网的过程详解

    Nginx正向代理实现局域网电脑访问外网的过程详解

    在工作中我遇到了一个类似的情况:在公司网络中,由于管理要求,局域网内的电脑不能直接访问外网,但是,工作上领导吩咐需要让局域网内的电脑能够访问外网上的某个网站,这时候就需要用到正向代理,本文将介绍如何配置 Nginx 实现这一功能,需要的朋友可以参考下
    2024-03-03
  • Nginx服务器中关于SSL的安全配置详解

    Nginx服务器中关于SSL的安全配置详解

    这篇文章主要介绍了Nginx服务器中关于SSL的安全配置详解,2014年曝出的SSL安全漏洞无疑为整个业界带来了巨大震动,本文便对此给出相关安全维护方法,需要的朋友可以参考下
    2015-06-06
  • Nginx 配置过程的具体步骤

    Nginx 配置过程的具体步骤

    这篇文章主要介绍了Nginx 配置过程的详细介绍的相关资料,希望通过本文能帮助到大家,让大家掌握如何配置Nginx,需要的朋友可以参考下
    2017-10-10
  • 详解Nginx如何配置Web服务器的示例代码

    详解Nginx如何配置Web服务器的示例代码

    这篇文章主要介绍了详解 Nginx如何配置Web服务器的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • nginx中状态统计的实现

    nginx中状态统计的实现

    本文主要介绍了nginx中状态统计的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Nginx配置文件提权的实战指南

    Nginx配置文件提权的实战指南

    在现代 Linux 系统中,nginx 通常作为 Web 服务的核心组件运行,其支持的模块化配置、灵活的路径设置以及多样的文件解析能力,本文结合一次真实场景,给大家介绍如何通过配置文件完成提权操作进行深入剖析,需要的朋友可以参考下
    2025-09-09
  • Nginx负载均衡通用方案详解

    Nginx负载均衡通用方案详解

    本文介绍Nginx负载均衡的最优配置方案,强调了因应不同场景(如视频会议和商城)需求差异的重要性,提出通过模块化配置和核心组件组合,实现一次配置多场景覆盖,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2025-10-10
  • 关于多级缓存使用(nginx本地缓存、JVM进程缓存、redis缓存)

    关于多级缓存使用(nginx本地缓存、JVM进程缓存、redis缓存)

    这篇文章主要介绍了关于多级缓存使用(nginx本地缓存、JVM进程缓存、redis缓存),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Nginx配置ssl证书(https)的全过程

    Nginx配置ssl证书(https)的全过程

    这篇文章主要介绍了Nginx配置ssl证书(https)的过程,在文中大家需要特别注意,如果有防火墙的话,记得开通443端口,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-10-10

最新评论