NGINX组件(rewrite)

一、location匹配的规则和优先级(*)

URI:统一资源标识符,是一种字符串标识,用于标识抽象的或者是物理资源;如:文件、图片、视频等

nginx中的URI匹配的是:网址"/"后的路径 如:............/images/a.jpg

location就是用来匹配URI的

匹配方式

匹配方式
1、精确匹配: location = / {......}
2、正则匹配: location ~ / {......}
3、一般匹配: location / {......}

匹配规则

匹配规则:
= 精确匹配,完全匹配,不能错误一个字,必须要完全匹配
^~ 匹配普通字符,前缀匹配
$~ 结尾匹配
~ 区分大小写的匹配
~* 不区分大小写的匹配
!~ 区分大小写的匹配,并且逻辑取反
!~* 不区分大小写的取反

location匹配的原则:越精准,越匹配;同时优先级越高

总结:匹配的优先级------>越精准,优先级越高

location的优先级

location = :精确匹配

location ^~ :前缀匹配

location ~* : 正则匹配

location /xxx/ : 一般匹配的准确匹配

location / : 一般匹配

注意:一旦匹配成功,后续将不再匹配

工作中的location匹配规则

一、第一个 必选规则

location = / { }

原因:直接匹配根网站。直接通过域名访问首页是网站最常用的,直接使用精确匹配,可以加快处理,一般使用精确匹配处理的都是首页

二、第二个规则

location ^~ /static/ { }

处理静态文件的请求,目录匹配 (static为自定义)

三、

location ~* \.(gif | jpg | png | css)

匹配图片,但注意如果使用rewrite来指定后缀的类型,要在location定义中移除,不然会陷入死循环

四、通用规则

location / {

proxy_pass ------------指定代理、反向代理,转发动态请求,如php.jsp请求 ,发到后端

}

rewrite 重写、重定向

rewrite使用nginx的全局变量,或是自己设置的变量,结合正则表达式,和标志位实现URL的重定向

default_type text/plain;

表示如果没有在其他地方显示:content_type的头字段,默认响应为text/plain纯文本格式

text/html :默认的响应类型,也就是页面

text/plain :纯文本格式,类似.txt文件

text/css :css样式的类型:css

text/javascript:java脚本,.js。前端文件,也可以理解是iava解析的程序文件。

rewrite 执行顺序

1、执行service模块中的rewrite

2、执行location中的匹配

3、如果location当中还有rewrite,则会继续执行

注意:如果不停的rewrite,则只会循环执行10次,10次过后进行报错,返回状态码:500

rewrite的语法

rewrite <regex(正则)> <replacement> [flag(标志位)]

过程:

rewrite:开始重定向

regex:正则匹配的规则

replacement :表示跳转后内容,要重定向的URL

flag:标志位

标志位分为四种:

permanent :永久重定向、返回码301 ------ 永久性的变更URL,搜索引擎会转移他的权重,以及排名,到新的URL

redirect :临时重定向,返回码:302 ------ 用于短期变更(网站维护、升级、更新),搜索,是不会转移权重和排名

返回码:304 指的是获取的是本地缓存

break :重定向,但是不会改变原始的URL,内容会根据系统处理而显示重定向后的内容,并且只会请求一次,即刻跳出当前匹配,立即终止

last :表示本条匹配完成后,继续向下匹配,只要有last就会继续进行匹配,配置时需要注意,防止死循环

配置基于域名的跳转

首先进入nginx的配置文件 进行修改

vim /usr/local/nginx/conf/nginx.conf

 server {
        listen       80;
        server_name  www.zheng.cc;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            if ($host = 'www.zheng.cc') {
            rewrite ^/(.*)$ http://www.bai.com/$1 permanent;
            }
            root   html;
            index  index.html index.htm;
        }
}

在本地hosts文件中写入配置的地址

echo "20.0.0.40 www.zheng.cc www.bai.com" >> /etc/hosts

重启nginx服务

systemctl restart nginx

测试:输入配置的地址 www.zheng.cc 后回车

会跳转至配置的www.bai.com

相关推荐
breaksoftware23 分钟前
Windows Subsystem for Linux——设置默认登录用户名
linux·运维·服务器
梁萌3 小时前
Linux安装Docker
linux·运维·docker·helloworld·容器化部署
翱翔-蓝天3 小时前
在 CentOS 系统上安装 ClickHouse
运维·docker·容器
彩虹糖_haha4 小时前
Linux高并发服务器开发 第五天(压缩解压缩/vim编辑器/查找替换/分屏操作/vim的配置)
linux·运维·服务器
旺仔学IT4 小时前
Centos7中使用yum命令时候报错 “Could not resolve host: mirrorlist.centos.org; 未知的错误“
linux·运维·centos
qq_433618445 小时前
shell 编程(五)
linux·运维·服务器
VVVVWeiYee5 小时前
项目2路由交换
运维·服务器·网络·网络协议·信息与通信
denglei.6 小时前
在Nginx部署Web应用,如何保障后端API的安全
nginx·安全
lifeng43216 小时前
Jenkins集成部署(图文教程、超级详细)
运维·jenkins
白手小弟7 小时前
python wxauto库实现微信自动化发送信息、回复、添加好友等
运维·自动化