目录
一、Nginx常见模块
二、访问路由location
2.1 location常用正则表达式
2.2location的分类
2.3location 常用的匹配规则
2.4location优先级排列说明
2.5location 示例
2.6location 优先级总结
2.7实例
2.7.1location = / {} 与 location / {}
2.7.2 location = /index.html {} 与 location / {}
2.7.3location = /1.jpg {} 和 location ~* .(gif|jpg|png|jpeg)$ {}比较
2.7.4大小写问题
2.8实际网站使用中的三个匹配规则定义
第一个规则
第二个规则
第三个规则
三、REWRITE模块
3.1rewrite功能
3.2Rewrite 跳转场景
3.3Rewrite 跳转实现
3.4Rewrite 执行顺序
3.5Rewrite 语法格式
3.6 Rewrite 实例
3.6.1基于域名的跳转
3.6.2基于客户端IP 访问跳转
3.6.3基于旧域名跳转到新域名后面加目录
3.6.4基于参数匹配的跳转
3.6.5基于 目录下所有的php文件
3.6.6基于 普通的一条url
一、Nginx常见模块http
http块是Nginx服务器配置中的重要部分,代理、缓存和日志定义等绝大多数的功能和第三方模块的配置都可以放在这模块中。作用包括:文件引入、MIME-Type定义、日志自定义、是否使用sendfile传输文件、连接超时时间、单连接请求数上限等。
server
server块,虚拟主机(虚拟服务器)。作用:使得Nginx服务器可以在同一台服务器上只要运行一组Nginx进程,就可以运行多个网站。
location
location块是server块的一个指令。作用:基于Nginx服务器接收到的请求字符串,虚拟主机名称(ip,域名)、url匹配,对特定请求进行处理。
二、访问路由location2.1 location常用正则表达式
2.2location的分类
-
精准匹配:location = / {}
-
一般匹配:location / {}
-
正则匹配:location ~ / {}
2.3location 常用的匹配规则
-
首先精确匹配 =
-
其次前缀匹配 ^~
-
其次是按文件中顺序的正则匹配 ~或~*
-
然后匹配不带任何修饰的前缀匹配
-
最后是交给 / 通用匹配
location = / { [ configuration A ]}location / { [ configuration B ]}location /documents/ { [ configuration C ]}location ^~ /images/ { [ configuration D ]}location ~* \.(gif|jpg|jpeg)$ { [ configuration E ]}
2.5location 示例
(1)精确匹配
location = / {}=为精确匹配 / , 主机名后不能携带任何字符串,比如 / 和 /data ,则/匹配,/data不匹配
(2)一般匹配/通用匹配
location / {}代表以/开头,所以这条规则将匹配所有的请求
location /documents/ {}匹配任何以/documents/开头的地址,匹配符合后,还会继续往下搜索其他 location,只有其它location后面的正则表达式没有匹配到时,才会用这一条
location /documents/abc {}匹配任何以/documents/abc开头的地址,匹配符合后,还会继续往下搜索其他 location,只有其它location后面的正则表达式没有匹配到时,才会用这一条
(3)正则匹配
location ^~ /images/ {} 匹配任何已/images/ 开头的地址,匹配符合后,停止往下搜索,采用这一条
location ~* \.(gif|jpg|jpeg)$ {} 匹配所有 gif jpg 或 jepg 结尾的请求如果 有上面的location ^~ /images/ {}匹配 则会先匹配上一请求,所以到不了这一条。
2.6location 优先级总结
如果是匹配某个具体文件: (location = 完整路径) > (location ^~ 完整路径) > (location ~* 完整路径) >(location ~ 完整路径) > (location /)通用匹配
2.7实例
2.7.1location = / {} 与 location / {}
实例1:location = / {} 和 location / {} ,按道理应匹配前者,但实际确实匹配后者,匹配只写域名精确匹配不生效,接下来一个小例子说明一下
1. #在配置文件添加匹规则vim /usr/local/nginx/conf/nginx.conf#添加的网页 location = / { root /web/dog/; }#默认网页 location / { root html; index index.html index.htm; }2. #新建网页站点目录mkdir -p /web/dog3. #在站点目录下新建index.htmlvim /web/do