2019.9.20 Nginx Location 及静动分离案例

一、Nginx正则及location匹配
1、Nginx location规则匹配
^~:标识符匹配后面跟一个字符
=:精准匹配
~:区分大小写的匹配
~*:不区分大小写的匹配
!~:对区分大小写的匹配取非
!~*:对不区分大小写的匹配取非
/:通用匹配
2、正则表达式
*:重复前面的字符0次或多次
?:重复前面的字符0次或1次
+:重复前面的字符1次或多次
.:匹配除换行符以外的任意一个字符
(a|b):匹配a或b
^:以...开头
$:以...结尾
{n}:重复前面的字符n次
{n,}:重复前面的字符n次或更多次
{n,m}:重复前面的字符n-m次
*?:重复前面的字符0次或多次,但尽可能少重复
+?:重复前面的字符1次或多次,但尽可能少重复
??:重复前面的字符0次或1次,但尽可能少重复
{n,m}?:重复前面的字符n-m次,但尽可能少重复
{n}?:重复前面的字符n次以上,但尽可能少重复
3、正则表达式补充

\W:匹配任意不是字母,数字,下划线,汉字的字符(特殊符号)

\S:匹配任意不是空白符的字符

\D:匹配任意非数字的字符

\B:匹配任意不是单词开头或结尾的位置

[a]:匹配单个字符a

[a-z]:匹配a-z小写字符的任意一个

[^a]:匹配除了a以外的任意字符

[^abc]:匹配除了abc这几个字母以外的任意字符

4、Nginx location应用规则

先写一个location,后面匹配挑任意一个,加url的地址(网页路径)花括号里写最终要处理的动作

location [=|~|~*|^~|!~|!~*] /url/{...}

默认值:no

使用字段:server

location参数根据URL的不同需求来进行匹配,可以使用字符串与正则表达式匹配

例:location ~* .*\.jsp$ {

  proxy_pass http://tomcat_server;

}

(1)

http://www.a.com/

location = / {

#精准匹配 / ,主机名后面不能带任何的字符串

[configuration A ]

}

(2)

location / {

#因为所有的地址都以 / 开头,所以这条规则将匹配到所有的请求

#但是正则和最长字符串会优先匹配

[configuration B ]

}

(3)

location / documents/ {

#匹配任意以documents开头的地址,匹配符合以后,还要继续往下搜索

#只有后面的正则表达式没有匹配到时,才会采用这一条

[configuration C ]

}

(4)

location ~  / documents/Abc {

#匹配任意以documents开头的地址,匹配符合以后,还要继续往下搜索

#只有后面的正则表达式没有匹配到时,才会采用这一条

[configuration CC ]

}

(5)

location ^~ /images/ {

#匹配任意以images开头的地址,匹配符合以后,还要继续往下搜索

[configuration D ]

}

(6)

location ~*\.(gif|jpg|jpeg) {

#匹配所有以gif,jpg或jpeg结尾的请求

#然而,所有的请求/images/ 下的图片会被config D 处理,因为 ^ ~ 到达不了这一条正则

[configuration E ]

}

(7)

location  /images/ {

#字符匹配到 /images/,继续往下,会发现 ^~ 存在

[configuration F ]

}

(8)

location /images/abc {

#最长字符串匹配到 /images/abc,继续往下,会发现 ^~ 存在

[configuration G ]

}

5、匹配顺序优先级:

(location = )> (location 完整路径)>(location ^~路径)>(location ~,~*正则顺序)>(location 部分起始路径)>(/)

6、实验(需要两台虚拟机)

第一台虚拟机确保安装nginx

第二台虚拟机上安装确保搭建好LAMP

(1)在第二台虚拟机上:[[email protected] ~]# rpm -q nfs-utils rpcbind      //查看有没有安装nfs-utils rpcbind这两个软件包

[[email protected] ~]# mkdir /wwwroot         //创建一个文件
[[email protected] ~]# vim /etc/exports      //添加以下内容

/wwwroot 192.168.200.112  (ro)

[[email protected] ~]# systemctl restart rpcbind
[[email protected] ~]# systemctl restart nfs

(2)[[email protected] ~]# cd /wwwroot/           //在里面添加一张图片

rz

(3)在第一台虚拟机上:

[[email protected] ~]# cd /usr/local/nginx/html/images/          //查看一下里面有在第二台虚拟机上添加的图片

[[email protected] html]# vim index.html          //添加以下内容(把图片加进去)

<img src="images/wyb.jpg" />

(4)在网页上访问:192.168.200.112

原文地址:https://www.cnblogs.com/990624lty-jhc/p/11554897.html

时间: 2024-10-03 05:58:04

2019.9.20 Nginx Location 及静动分离案例的相关文章

2019.9.20 nginx+tomcat的负载均衡集群

图片上面是需要准备的环境 1,先安装nginx [[email protected] ~]# yum -y install pcre-devel zlib-devel openssl-devel lrzsz [[email protected]~]#useradd -M -s /sbin/nologin nginx 释放nginx源码包 [[email protected]~]# tar xf nginx-1.14.2.tar.gz -C /usr/src/ 4)配置编译: [[email pr

Haproxy实现负载均衡和静动分离

在做过了haprxy负载均衡和动静分离后,haproxy在这两方面的确比nginx更专业一些,session保持,cookie引导,url监测后端,mysql负载均衡等都是nginx所不具备的:但这并不能就说haprox就能取代nginx,nginx的缓存就是proxy所不具备的. 下面就来用haproxy做些基础的配置吧. haproxy:192.168.3.124 node1:192.168.3.128 node2:192.168.3.129 一.基础配置: 1.安装proxy yum in

12.17 Nginx负载均衡;12.18 ssl原理;12.19 生产ssl密钥对;12.20 Nginx配置ssl

扩展: 针对请求的uri来代理 http://ask.apelearn.com/question/1049 根据访问的目录来区分后端web http://ask.apelearn.com/question/920 12.17 Nginx负载均衡 1. 安装dig命令: [[email protected] ~]# yum install -y bind-utils 2. 用dig获取qq.com的ip地址: [[email protected] ~]# dig qq.com 3. 创建ld.co

nginx location配置(URL)

语法规则: location [=|~|~*|^~] /uri/ { … }= 表示精确匹配,这个优先级也是最高的^~ 表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格).~  表示区分大小写的正则匹配~* 表示不区分大小写的正则匹配(和上面的唯一区别就是大小写)!~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则/ 通用匹配,任何请求都会匹配到,默认

nginx location配置

nginx location配置 location在nginx中起着重要作用,对nginx接收到的请求字符串进行处理,如地址定向.数据缓存.应答控制.代理转发等 location语法 location [=|~|~*|^~] uri {...} []部分是匹配类型,可以没有,其中各项含义: (1)= 精准匹配,请求字符串必须和uri完全相同时匹配成功 (2)~ 区分大小写的正则匹配 (3)~* 不区分大小写的正则匹配 (4)^~ 注意这个不是正则匹配,表示uri以普通字符串开头, (5)空 表示

nginx location 规则优先级

一 nginx  location 匹配命令 ~   #表示执行一个正则匹配,区分大小写 ~*  #表示执行一个正则匹配,不区分大小写 ^~  #表示普通字符匹配,如果该选项匹配,只匹配该选项, 不匹配别的选项,一般用来匹配目录 =   #进行普通字符精确匹配 二 nginx location 匹配优先级(与location在配置文件中的顺序无关) 1=  精确匹配.如果发现精确匹配,nginx停止搜索其他匹配模式. 2    普通字符匹配,正则表达式规则和长的块规则将被优先和和查询匹配,也就是

nginx location一些认识

基本语法 location [=|~|~*|^~|@] /uri/ { - } [=]表示精确匹配,如果找到,立即停止搜索并立即处理此请求. [~ ] 表示区分大小写匹配 [~*] 表示不区分大小写匹配 [^~ ] 表示只匹配字符串,不查询正则表达式. [@] 指定一个命名的location,一般只用于内部重定向请求. **区分和不区分大小写的正则匹配优先级相同,以先后顺序来决定匹配哪一个 **=的优先级比~高 **^~的优先级比~高 **^~优先匹配的是从根开始的匹配 nginx locati

Nginx Location和Rewrite深入剖析

Nginx Location和Rewrite深入剖析 Nginx Location Nginx由内核和模块组成,其中内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端的请求映射到一个location block,而location是Nginx配置中的一个指令,用于访问的URL匹配,而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作. location功能是由ngx_http_index_module模块提供的. location常放在serve

Nginx Location指令配置及常用全局变量

在实践安装nginx的时候,不知道./configure是什么意思,这里特地记录一下. 在linux中./代表当前目录,属于相对路径../代表上一级目录,属于相对路径/代表根目录,/开头的文件都是绝对路径./configure的意思是执行当前目录下面的configure文件configure一般都有可执行的权限,如果没有的话,用./configure是不能执行的,但是可以这样执行:sh ./configure 使用--prefix参数指定nginx安装的目录 不指定prefix,则可执行文件默认