1. location的详细用法

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

用于实现从uri到文件系统的路径映射;ngnix会根据用户请求的URI来检查定义的所有location,并找出一个最佳匹配,而后应用其配置。

uri前符号说明

  • = 对URI做精确匹配;
  • ^~对URI的最左边部分做匹配检查,不区分字符大小写
  • ~对URI做正则表达式模式匹配,区分字符大小写
  • !~ 对URI做正则表达式模式不匹配,区分字符大小写
  • ~*对URI做正则表达式模式匹配,不区分字符大小写
  • 不带符号匹配起始于此uri的所有的uri
  • / 通用匹配。任何请求都会匹配到
  • * 表示任意长度的任意字符

匹配优先级从高到低如下:

(location =) > (location 完整路径) > (location ^~ 路径) > (location ~/~* 路径) > (location 部分起始路径) > (/)

1.1 精确匹配

#示例:精确匹配doc目录下的一个文件名。
#1.nginx的配置文件如下:
[root@nginx01 web1]# vim /etc/nginx/conf.d/virtualhost.conf
server {
listen 80;
server_name www.nginx01.com;
location / {
root /data/nginx/html/web1;
index index.html;
}
location = /file1.txt {
root /data/nginx/html/web1/doc;
index index.html;
}
} #2.重启nginx服务
[root@nginx01 web1]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@nginx01 web1]# systemctl reload nginx.service #3.新建doc目录和file1.txt文件
[root@nginx01 web1]# mkdir doc
[root@nginx01 web1]# echo "abc" > doc/file1.txt #4.客户端测试
[root@xuzhichao ~]# curl http://www.nginx01.com/file1.txt
abc

1.2 区分大小写

#1.nginx的配置如下:
[root@nginx01 web1]# vim /etc/nginx/conf.d/virtualhost.conf
server {
listen 80;
server_name www.nginx01.com;
location / {
root /data/nginx/html/web1;
index index.html;
}
location ~ /file1\.txt {
root /data/nginx/html/web1/doc;
index index.html;
}
} #2.重启nginx服务
[root@nginx01 web1]# systemctl reload nginx.service #3.在doc下新建文件
[root@nginx01 web1]# echo "qwe" > doc/file1.TXT
[root@nginx01 web1]# tree doc/
doc/
├── file1.txt
└── file1.TXT #4.客户端如果访问File1.txt或file.TXT,则无法匹配到location ~ /file1.txt语句块
[root@xuzhichao ~]# curl http://www.nginx01.com/file1.txt
abc
[root@xuzhichao ~]# curl http://www.nginx01.com/file1.TXT
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.20.1</center>
</body>
</html>

1.3 不区分大小写

对用户的请求的uri做模糊匹配,不区分大小写,无论是大写,小写还是大小写混合都会匹配,但是需要有对应的资源(大写,小写,大小写混合)才能访问成功。此模式通常用于匹配用户的静态资源。

#1.nginx的配置文件如下:
root@nginx01 web1]# vim /etc/nginx/conf.d/virtualhost.conf
server {
listen 80;
server_name www.nginx01.com;
location / {
root /data/nginx/html/web1;
index index.html;
}
location ~* /file1\.txt {
root /data/nginx/html/web1/doc;
index index.html;
}
} #2.doc下的文件如下:
[root@nginx01 web1]# tree doc/
doc/
├── file1.txt
└── file1.TXT #3.重启nginx服务
[root@nginx01 web1]# systemctl reload nginx.service #4.在客户端测试访问file1.txt和file1.TXT
[root@xuzhichao ~]# curl http://www.nginx01.com/file1.TXT
qwe
[root@xuzhichao ~]# curl http://www.nginx01.com/file1.txt
abc

1.4 匹配URI开始

#1.nginx的配置文件如下:
[root@nginx01 ~]# vim /etc/nginx/conf.d/virtualhost.conf
server {
listen 80;
server_name www.nginx01.com;
location / {
root /data/nginx/html/web1;
index index.html;
}
location ^~ /doc {
root /data/nginx/html/web1;
index index.html;
}
location /doc1 {
alias /data/nginx/html/web1;
index index.html;
}
} #2.web1站点的目录结构如下:
[root@nginx01 web1]# cat /data/nginx/html/web1/index.html
www.nginx01.com
[root@nginx01 web1]# cat /data/nginx/html/web1/doc/index.html
doc.index #3.重启nginx服务
[root@nginx01 web1]# systemctl reload nginx.service #4.客户端测试
[root@xuzhichao ~]# curl http://www.nginx01.com/doc1/
www.nginx01.com
[root@xuzhichao ~]# curl http://www.nginx01.com/doc/
doc.index

1.5 测试location的优先级

#1.nginx的配置如下:
[root@nginx01 ~]# cat /etc/nginx/conf.d/virtualhost.conf
server {
listen 80;
server_name www.nginx01.com; location = / {
default_type text/html;
return 200 'location = /\n';
}
location / {
default_type text/html;
return 200 'location /\n';
}
location /doc/dir1 {
default_type text/html;
return 200 'location /doc/dir1\n';
}
location ^~ /images {
default_type text/html;
return 200 'location ^~ /images\n';
}
location /doc {
default_type text/html;
return 200 'location /doc\n';
}
location ~* \.(jpg|gif|mp4)$ {
default_type text/html;
return 200 'location ~* \.(jpg|gif|mp4)\n';
}
} #2.重启nginx服务
[root@nginx01 web1]# systemctl reload nginx.service #3.使用客户端访问不同的uri测试location的优先级
[root@xuzhichao ~]# curl http://www.nginx01.com/
location = / [root@xuzhichao ~]# curl http://www.nginx01.com/index.html
location / [root@xuzhichao ~]# curl http://www.nginx01.com/doc
location /doc [root@xuzhichao ~]# curl http://www.nginx01.com/doc/dir1
location /doc/dir1 [root@xuzhichao ~]# curl http://www.nginx01.com/doc/1.txt
location /doc [root@xuzhichao ~]# curl http://www.nginx01.com/images/1.jpg
location ^~ /images [root@xuzhichao ~]# curl http://www.nginx01.com/doc/1.jpg
location ~* \.(jpg|gif|mp4) [root@xuzhichao ~]# curl http://www.nginx01.com/doc/dir1/1.jpg
location ~* \.(jpg|gif|mp4)

1.6 location的生产使用示例

#1.直接匹配网站根会加速nginx的访问处理
location / {
......;
} #2.访问静态资源,不区分大小写
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
......;
} #3.精准匹配
location = /nginx_status {
......;
} #4.区分大小写,匹配php资源
location ~ \.php$ {
......;
} #5.多应用配置
location ~* /app1 {
......;
}
location ~* /app2 {
......;
}

WEB服务与NGINX(6)-location使用详解的更多相关文章

  1. nginx之location配置详解及案例

    语法规则: location [=|~|~*|^~] /uri/ { … } =  开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码, ...

  2. nginx与location语法详解

    Location语法优先级排列 匹配符 匹配规则 优先级 = 精确匹配 ^~ 以某个字符串开头 ~ 区分大小写的正则匹配 ~* 不区分大小写的正则匹配 !~ 区分大小写不匹配的正则 !~* 不区分大小 ...

  3. nginx 与location语法详解

    Location语法优先级排列   匹配符 匹配规则 优先级 = 精确匹配 1 ^~ 以某个字符串开头 2 ~ 区分大小写的正则匹配 3 ~* 不区分大小写的正则匹配 4 !~ 区分大小写不匹配的正则 ...

  4. nginx的location配置详解

    语法规则: location [=|~|~*|^~] /uri/ { … } =开头表示精确匹配 ^~开头表示uri以某个常规字符串开头,理解为匹配url路径即可.nginx不对url做编码,因此请求 ...

  5. 【转】nginx服务器安装及配置文件详解

    原文:http://seanlook.com/2015/05/17/nginx-install-and-config/ nginx服务器安装及配置文件详解 nginx在工作中已经有好几个环境在使用了, ...

  6. [转帖]nginx服务器安装及配置文件详解

    nginx服务器安装及配置文件详解 http://seanlook.com/2015/05/17/nginx-install-and-config/  发表于 2015-05-17 |  更新于: 2 ...

  7. Nginx安装及配置详解【转】

    nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...

  8. [转帖]Nginx安装及配置详解 From https://www.cnblogs.com/zhouxinfei/p/7862285.html

    Nginx安装及配置详解   nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP ...

  9. 【第六课】Nginx常用配置下详解

    目录 Nginx常用配置下详解 1.Nginx虚拟主机 2.部署wordpress开源博客 3.部署discuz开源论坛 4.域名重定向 5.Nginx用户认证 6.Nginx访问日志配置 7.Ngi ...

  10. Nginx简介及配置文件详解

    http://blog.csdn.net/hzsunshine/article/details/63687054 一 Nginx简介    Nginx是一款开源代码的高性能HTTP服务器和反向代理服务 ...

随机推荐

  1. ET介绍——浅谈AI框架

    AI框架 1. 几种AI的设计 AI在游戏中很多,但是为什么大家总是感觉ai编写起来十分困难,我后来思考了一番,主要原因是使用的方法不当.之前大家编写ai主要有几种方案: a. 状态机 我是不知道谁想 ...

  2. OpenHarmony技术日探讨教育发展,聚焦开源人才培养

    4 月 25 日,OpenAtom OpenHarmony (以下简称"OpenHarmony")技术日在深圳成功举办.作为 OpenHarmony 开源项目的年度盛会,大会以&q ...

  3. 带你玩转OpenHarmony AI:打造智能语音子系统

    简介 AI时代,智者当先,判断一个终端设备是否智能,语音能力是必不可缺的.智能家居.智慧厨房.智能汽车等等,一切衣食住行都在往智能方向发展,那我们该如何在OpenAtom OpenHarmony(简称 ...

  4. 应用可靠性与性能不给力?HarmonyOS HiViewDFX了解一下

    原文链接:https://mp.weixin.qq.com/s/Y44jUEB3ttlijbMDPrBcNg,点击链接查看更多技术内容:   作为基础软件服务子系统的HarmonyOS HiViewD ...

  5. ​CentOS防火墙操作命令 ​

    CentOS防火墙操作命令 1.查看防火墙服务状态 systemctl status firewalld.service 或者查看防火墙的状态: 1 firewall-cmd --state 2.开启 ...

  6. Pytorch Dataset入门

    ​ Dataset入门 Pytorch Dataset code:torch/utils/data/dataset.py#L17 Pytorch Dataset tutorial: tutorials ...

  7. CSS 中 MASK 实现图片遮罩登炫酷效果

    顾名思义,mask 译为遮罩.在 CSS 中,mask 属性允许使用者通过遮罩或者裁切特定区域的图片的方式来隐藏一个元素的部分或者全部可见区域. 其实 mask 的出现已经有一段时间了,只是没有特别多 ...

  8. 在RockyLinux 9.3环境中采用RPM模式部署Oracle 19C

    在RockyLinux 9.3环境中采用RPM模式部署Oracle 19C 用途 在开发数据库系统时,可以验证功能是否与Oracle的表现一致,验证正确性和兼容性 限制 虚拟机安装,CPU 2*4 内 ...

  9. Java实现控制台购书系统

    "感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友.您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!" 代码 im ...

  10. 力扣584(MySQL)-寻找用户推荐人(简单)

    题目: 给定表 customer ,里面保存了所有客户信息和他们的推荐人. 写一个查询语句,返回一个客户列表,列表中客户的推荐人的编号都 不是 2. 对于上面的示例数据,结果为:  解题思路: 本题最 ...