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

相关推荐
热爱嵌入式的小许5 小时前
Linux基础项目开发1:量产工具——显示系统
linux·运维·服务器·韦东山量产工具
Pythonliu710 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我10 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
小O_好好学11 小时前
CentOS 7文件系统
linux·运维·centos
哲伦贼稳妥12 小时前
一天认识一个硬件之机房地板
运维·网络·经验分享·其他
苹果醋312 小时前
快速玩转 Mixtral 8x7B MOE大模型!阿里云机器学习 PAI 推出最佳实践
spring boot·nginx·毕业设计·layui·课程设计
john_hjy12 小时前
11. 异步编程
运维·服务器·javascript
x晕x12 小时前
Linux dlsym符号查找疑惑分析
linux·运维·服务器
活跃的煤矿打工人12 小时前
【星海saul随笔】Ubuntu基础知识
linux·运维·ubuntu
tangdou36909865513 小时前
两种方案手把手教你多种服务器使用tinyproxy搭建http代理
运维·后端·自动化运维