WEB服务与NGINX(6)-location使用详解
2021/6/20 7:26:53
本文主要是介绍WEB服务与NGINX(6)-location使用详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 1. location的详细用法
- 1.1 精确匹配
- 1.2 区分大小写
- 1.3 不区分大小写
- 1.4 匹配URI开始
- 1.5 测试location的优先级
- 1.6 location的生产使用示例
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使用详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-29Nginx发布学习:从入门到实践的简单教程
- 2024-10-28Nginx发布:新手入门教程
- 2024-10-21nginx 怎么设置文件上传最大20M限制-icode9专业技术文章分享
- 2024-10-17关闭 nginx的命令是什么?-icode9专业技术文章分享
- 2024-09-17Nginx实用篇:实现负载均衡、限流与动静分离
- 2024-08-21宝塔nginx新增8022端口方法步骤-icode9专业技术文章分享
- 2024-08-21nginx配置,让ws升级为wss访问的方法步骤-icode9专业技术文章分享
- 2024-08-15nginx ws代理配置方法步骤-icode9专业技术文章分享
- 2024-08-14nginx 让访问带有/relid的地址返回404 ,例子 /relid-x-0.36-y-131.html-icode9专业技术文章分享
- 2024-08-14nginx 判断地址有/statics/的路径,指向到/home/html/statics/目录-icode9专业技术文章分享