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指令相关推荐

  1. Nginx的location指令

    location指令 server{listen 80;server_name localhost;location / {}location /abc{}... } location:用来设置请求的 ...

  2. [Nginx]location 指令说明

    location 指令说明 该指令用于匹配 URL. 语法如下: 1.= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配 成功,就停止继续向下搜索并立即处理该请求. ...

  3. nginx中的location指令

    1.location 介绍 location是Nginx中的块级指令(block directive),location指令的功能是用来匹配不同的url请求,进而对请求做不同的处理和响应,这其中较难理 ...

  4. nginx location指令用法

    nginx使用location指令去匹配不同的路径 nginx首先通过路径的前缀去匹配 此时用法就是如下: # url就是路径的前缀,比如/, 比如/aaa location url {...} lo ...

  5. Location 指令介绍

    Nginx-13 Location 指令介绍 ************ 如有侵权请提示删除 *************** location:用来设定不同URI 的文件系统的路径映射,一个server ...

  6. location ~ .php$,nginx location指令详解,

    nginx location指令详解, location匹配的是nginx的哪个变量? $request_uri location的匹配种类有哪些? =开头表示精确匹配 ^~ 开头,注意这不是一个正则 ...

  7. nginx之location指令详解

    前面介绍过nginx.conf的文件结构,大致介绍了顶层的指令和各级指令,今天给大家介绍下http模块里面的子模块server的指令location,该指令直接影响到请求路由转发规则,乃重中之重. l ...

  8. nginx(九)find_config阶段的location指令

    一   location server块中的'rewrite'阶段执行完,进入'find_config'阶段,进行'location'匹配 ①   location 细节点: '$uri[不携带查询参 ...

  9. Nginx Location指令详解

    location / { #location其实是server的一个指令,为nginx服务器提供比较多而且灵活的指令,都是在location中体现的,主要是基于nginx接受到的请求字符串,对用户请求 ...

  10. 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 我 ...

最新文章

  1. VLC SDK在VS2010中的配置及简单使用举例
  2. 用python汇总pdf文件_Python处理PDF文件-简译与总结
  3. linux shell 特殊变量 符号 $0, $#, $*, $@, $?, $$ 命令行参数
  4. Eclipse | 使用
  5. UIImage指定区域自由拉伸
  6. QueryBuilder : 打造优雅的Linq To SQL动态查询
  7. java 打印预览_java打印和打印预览机制实例代码
  8. cpu核心 线程 进程_科个普:进程、线程、并发、并行
  9. jieba分词错误_jieba分词处理
  10. 开机后主板测试卡直接显示“FF或00”的故障原因及排除方法:
  11. 基于K均值聚类算法的图像分割(Matlab)
  12. Network Trimming: A Data-Driven Neuron Pruning Approach towards Efficient Deep Architectures论文翻译/笔记
  13. 题解1205汉诺塔问题
  14. PDF417美国驾照条形码信息自动识别
  15. mybatis错误——java.io.IOException Could not find resource comxxxxxxMapper.xml
  16. 哈尔滨工业大学计算机考研难吗,哈尔滨工业大学(专业学位)计算机技术考研难吗...
  17. c# 判断路径是否存在
  18. 网页制作篇(智慧树网站马红老师)-基础知识总结1(标记篇)
  19. sqrt函数,对数进行开根号
  20. 【springBoot无法启动,启动类灰色】

热门文章

  1. 【单例】JAVA中的单例
  2. 一句话与中国菜刀的用法
  3. 关于RInda和dRuby(DRB)
  4. 四月单向历——你是人间四月天
  5. Makefile详解(自己觉得重新看一次学了好多东西,红色字)
  6. 他,是碾压爱迪生的科技天才!尼古拉特斯拉的一生竟是这样...
  7. Gmapping Dropped 100.00% of messages so far 解决办法
  8. 关于短视频平台框架搭建与技术选型探讨
  9. 我是一个坚持“朝九晚五”的程序员
  10. linux—jock