科技 > 操作系统 > Windows

Nginx Location配置全过程

4人参与 2025-07-17 Windows

一、location语法结构

1、语法结构说明

在nginx官方文档中定义的location语法结构为:

location [ = | ~ | ~* | ^~ ] uri { ... }

其中uri变量是待匹配的请求字符串,可以是不包含有正则表达式的字符串,称之为标准uri,也可以是包含正则表达式的字符串,称之为正则uri。方括号里的部分为可选项,我们称之为匹配标识。

当不添加匹配标识时,nginx服务器首先在server块的各个location块中搜索是否有标准uri和请求字符串匹配,如果有多个可以匹配,就记录匹配度最高的一个。

然后,服务器再用location块中的正则uri和请求字符串匹配,如果第一个正则uri匹配成功,结束搜索,并使用该location块处理请求。如果所有正则匹配全部失败,则用标准uri匹配到的匹配度最高的location块进行处理。

2、各个标识的含义和优先级

优先级:精确匹配 > 正则匹配 > 通用匹配

3、配置请求的根目录

web服务器接收到网络请求后,首先要在服务器端指定目录中寻找请求资源。在nginx服务器中,root用来配置资源的根目录,如下:

location /images {
	root /nginx/images;
}

备注:当访问/images/1.jpg时,nginx会在服务器上寻找路径为/nginx/images/images/1.jpeg的文件。

4、替换请求的uri

通过root指令我们可以指定资源访问的根目录,但是我们会发现访问的uri会附加到指定的文件目录下。通过alias指定,我们可以在访问服务器上资源时不保留访问前缀,如下:

location /images {
	alias /nginx/images;
}

备注:当访问/images/1.jpg时,nginx会在服务器上寻找路径为/nginx/images/1.jpeg的文件。

二、location具体示例

1、精确匹配

location = /50x.html {
	root /nginx/html;
}

备注:当访问/50x.html时,nginx会在服务器上寻找路径为/nginx/html/50x.html的文件。

2、正则匹配

location ~* ^/images/(.+\.(png|jpg|jpeg|gif))$ {
   alias  /nginx/images/$1;
}

备注:当访问/images/1.jpeg时,nginx会在服务器上寻找路径为/nginx/images/1.jpeg的文件,并且访问路径不区分大小写。

3、常规字符串匹配

location ~^ /static//(.+\.(html|htm)){
	alias /nginx/html/$1
}

备注:当访问/static/%20/index.html时,nginx会在服务器上寻找路径为/nginx/html/1.html的文件。

三、调试location的小技巧

一般如果文件访问失败,在错误日志里能看到错误日志提示,如下:

2024/05/11 15:15:28 [error] 16746#0: *125484 open() "/nginx/images/jpeg" failed (2: no such file or directory), client: 113.116.81.20, server: xxx.com, request: "get /images/1.jpeg http/1.1", host: "xxx.com"

错误日志的默认配置为:error_log logs/error.log error,也就是在logs/error.log文件中能看到相关错误提示,通过提示我们再进行配置的调整。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

您想发表意见!!点此发布评论

推荐阅读

虚拟机Centos7环境下实现安装wget方式

07-17

Win11用户可免费安装HEVC视频解码! 扩展无需支付7元

07-17

CentOS7安装wget的多种实现方式(yum不可用的情况下)

07-17

暑假装机选9800X3D还是U9 285K? u9285k和9800x3d性能对比测评

07-17

Windows server 2025 NFS Server部署的图文步骤

07-17

谁才是千帧之王? 锐龙9 9950X3D和i9-14900K处理器对比测评

07-17

猜你喜欢

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

发表评论