location指令
location看起来挺难,实际上用不了这么多东西,用的最多的就是默认location改,或者是默认的加虚拟主机。
1.location位置
location一般放在server里,每一个server都是一个虚拟主机,也就是说一个每一个server网站。在这个网站里要访问某一个资源,就得做定位,location就是用来做定位的。
Nginx 的 HTTP 配置主要包括三个区块,结构如下:
http { # 协议块/http的配置
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
gzip on;
server { # 服务块/server的配置
listen 80;
server_name localhost;
location / { # 请求块/location的配置
root html;
index index.html index.htm;
}
}
}
- location 是在 server 块中配置,根据不同的 URI 使用不同的配置,来处理不同的请求。
- location 是有顺序的,会根据不同请求配置的优先级来匹配的location 处理。
基本语法如下:
location [=|~|~*|^~|@] pattern{……}
2.location 前缀含义
例如 第一个/就代表第二个位置。第二个位置就是代表root目录指定的根目录。
例如:在浏览器访问写http://web1.server.com/htmld地址,就会访问到/html位置。
因为它是做定位的,根据浏览器里写的路径,去访问不同的资源。(每一个location下面可能有不同的资源)
location后面的前缀可以写很多东西,平时都是直接一个location后面跟目录。
比如:有好多html开头的目录,^html*,但是默认情况下,nginx不认识,想让location认识就得在前面加一个符号location ~^html*。~匹配。
= 表示精确匹配,优先级也是最高的 (平时在使用location后面符号的时候如果想精确匹配也可以不写=,就用默认的写路径就是精确匹配)
^~ 表示uri以某个常规字符串开头,理解为匹配url路径即可 (^~html 以html开头)
常规字符串:把认识的那些正则表达式特殊符号去掉,剩下的普通的abcd就是常规字符串。
~ 表示区分大小写的正则匹配 ( ~html )
~* 表示不区分大小写的正则匹配
!~ 表示区分大小写不匹配的正则
!~* 表示不区分大小写不匹配的正则
/ 通用匹配,任何请求都会匹配到根(平时都是直接写/,啥都不写,而且直接匹配到/)
@ 内部服务跳转
例如:内部服务跳转(这种需求特别少)
如果状态码是404则输出某个东西,它会跳转到ip_err,是返回的503代码。最终表示的意思是,当客户端访问ip路径的时候,正常情况下应该返回404的错误,但最终返回503的错误。因为做了一个内部跳转,其实就是location和location的跳转。这种没必要,还不如直接把503给它。
查找顺序和优先级
location是有优先级的,匹配范围越大越模糊,越模糊的优先级越低,越精确的优先级越高。但是有一个特列/,/是优先级最低的。
= 大于 ^~ 大于 ~|~*|!~|!~* 大于 / /是优先级最低的。
多个location配置的情况下匹配顺序为:首先匹配 =,其次匹配^~, 其次是按正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。
location 配置示例
1、没有修饰符 表示:必须以指定模式开始
location /abc {
root /home/www/nginx;
}
只有在浏览器中写了/abc,它才会访问这个目录/home/www/nginx;下面的页面,要是不写它就访问不了。
cd /usr/share/nginx一般发布网站的默认路径没有什么要求,不要去改。
vim /etc/nginx/conf.d/default.conf
浏览器访问写ip+abc 没有修饰符 表示:必须以指定模式开始
2、=表示:必须与指定的模式精确匹配
3、~ 表示:指定的正则表达式要区分大小写
它把/abc当成了正则表达式,并不是当成精确匹配的东西,只不过是因为写的a只能表示a,b表示b,c表示c。ab*访问abc的时候也能用
重启
写abd也可以,但是在配置文件里没有明确的写abd但是也能匹配到,这就是正则匹配。
写~*(不区分大小写)
[root@k ~]# systemctl restart nginx 重启nginx服务,去网站访问。
【注意】多个location配置的情况下匹配顺序为:首先匹配 =,其次匹配^~, 其次是按正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。
location指令相关推荐
- Nginx的location指令
location指令 server{listen 80;server_name localhost;location / {}location /abc{}... } location:用来设置请求的 ...
- [Nginx]location 指令说明
location 指令说明 该指令用于匹配 URL. 语法如下: 1.= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配 成功,就停止继续向下搜索并立即处理该请求. ...
- nginx中的location指令
1.location 介绍 location是Nginx中的块级指令(block directive),location指令的功能是用来匹配不同的url请求,进而对请求做不同的处理和响应,这其中较难理 ...
- nginx location指令用法
nginx使用location指令去匹配不同的路径 nginx首先通过路径的前缀去匹配 此时用法就是如下: # url就是路径的前缀,比如/, 比如/aaa location url {...} lo ...
- Location 指令介绍
Nginx-13 Location 指令介绍 ************ 如有侵权请提示删除 *************** location:用来设定不同URI 的文件系统的路径映射,一个server ...
- location ~ .php$,nginx location指令详解,
nginx location指令详解, location匹配的是nginx的哪个变量? $request_uri location的匹配种类有哪些? =开头表示精确匹配 ^~ 开头,注意这不是一个正则 ...
- nginx之location指令详解
前面介绍过nginx.conf的文件结构,大致介绍了顶层的指令和各级指令,今天给大家介绍下http模块里面的子模块server的指令location,该指令直接影响到请求路由转发规则,乃重中之重. l ...
- nginx(九)find_config阶段的location指令
一 location server块中的'rewrite'阶段执行完,进入'find_config'阶段,进行'location'匹配 ① location 细节点: '$uri[不携带查询参 ...
- Nginx Location指令详解
location / { #location其实是server的一个指令,为nginx服务器提供比较多而且灵活的指令,都是在location中体现的,主要是基于nginx接受到的请求字符串,对用户请求 ...
- etc php5 conf.d,php – nginx:[emerg]“location”指令不允许在/etc/nginx/conf.d/default.conf中使用:...
我刚开始在AWS AMI实例上使用Nginx,并且遇到了一些启动问题. 除了,我不需要mysql,所以我没有运行这个命令sudo yum -y install mysql-server mysql 我 ...
最新文章
- VLC SDK在VS2010中的配置及简单使用举例
- 用python汇总pdf文件_Python处理PDF文件-简译与总结
- linux shell 特殊变量 符号 $0, $#, $*, $@, $?, $$ 命令行参数
- Eclipse | 使用
- UIImage指定区域自由拉伸
- QueryBuilder : 打造优雅的Linq To SQL动态查询
- java 打印预览_java打印和打印预览机制实例代码
- cpu核心 线程 进程_科个普:进程、线程、并发、并行
- jieba分词错误_jieba分词处理
- 开机后主板测试卡直接显示“FF或00”的故障原因及排除方法:
- 基于K均值聚类算法的图像分割(Matlab)
- Network Trimming: A Data-Driven Neuron Pruning Approach towards Efficient Deep Architectures论文翻译/笔记
- 题解1205汉诺塔问题
- PDF417美国驾照条形码信息自动识别
- mybatis错误——java.io.IOException Could not find resource comxxxxxxMapper.xml
- 哈尔滨工业大学计算机考研难吗,哈尔滨工业大学(专业学位)计算机技术考研难吗...
- c# 判断路径是否存在
- 网页制作篇(智慧树网站马红老师)-基础知识总结1(标记篇)
- sqrt函数,对数进行开根号
- 【springBoot无法启动,启动类灰色】