【运维知识进阶篇】集群架构-Rewrite重定向(上)

简介: 【运维知识进阶篇】集群架构-Rewrite重定向

Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程。

分以下几种场景使用

1、地址跳转,用户访问一个URL,将其定向到另一个URL

2、协议跳转,用户通过http协议请求网站时,将其重新跳转至https协议方式

3、伪静态,动态页面静态化,为了搜素引擎收录。

4、搜索引擎,SEO优化依赖于url路径,好记的url便于支持搜索引擎录入

Rewrite标记

每个Rewrite后面都有flag标记,主要有以下几种

flag 规则
last 停止当前匹配,并重新发送请求
barek 终止匹配,不发送新请求
redirector 临时跳转,关闭nginx请求就不跳转了,302
premanent 永久跳转,访问过一次就不会访问原站了,301,第一次请求会保存缓存到浏览器中,通过浏览器缓存跳转

更改配置文件,准备代码文件进行测试last与break

1. [root@Web01 conf.d]# vim rewrite.conf
2. server {
3.         listen 80;
4.         server_name rewrite.koten.com;
5.         root /code/rewrite/;
6. 
7. location / {
8. rewrite /1.html /2.html;
9. rewrite /2.html /3.html;
10.         }
11. 
12. location /2.html {
13. rewrite /2.html /a.html;
14.         }
15. 
16. location /3.html {
17. rewrite /3.html /b.html;
18. "rewrite.conf" 18L, 343C written 
19. [root@Web01 conf.d]# systemctl restart nginx
20. [root@Web01 conf.d]# mkdir -p /code/rewrite
21. [root@Web01 conf.d]# echo 1.html > /code/rewrite/1.html
22. [root@Web01 conf.d]# echo 2.html > /code/rewrite/2.html
23. [root@Web01 conf.d]# echo 3.html > /code/rewrite/3.html
24. [root@Web01 conf.d]# echo a.html > /code/rewrite/a.html
25. [root@Web01 conf.d]# echo b.html > /code/rewrite/b.html

发现访问1.html,实际重定向到了b.html

添加last标记

1. [root@Web01 conf.d]# vim rewrite.conf
2. server {
3.         listen 80;
4.         server_name rewrite.koten.com;
5.         root /code/rewrite/;
6. 
7. location / {
8. rewrite /1.html /2.html last;
9. rewrite /2.html /3.html;
10.         }
11. 
12. location /2.html {
13. rewrite /2.html /a.html;
14.         }
15. 
16. location /3.html {
17. rewrite /3.html /b.html;
18. "rewrite.conf" 18L, 348C written 
19. [root@Web01 conf.d]# systemctl restart nginx

跳过了当前location,进行下一location重定向,最终跳转到a.html

添加down标记

1. [root@Web01 conf.d]# vim rewrite.conf
2. server {
3.         listen 80;
4.         server_name rewrite.koten.com;
5.         root /code/rewrite/;
6. 
7. location / {
8. rewrite /1.html /2.html break;
9. rewrite /2.html /3.html;
10.         }
11. 
12. location /2.html {
13. rewrite /2.html /a.html;
14.         }
15. 
16. location /3.html {
17. rewrite /3.html /b.html;
18. "rewrite.conf" 18L, 349C written 
19. [root@Web01 conf.d]# systemctl restart nginx

break后不再进行重定向操作,最终定向到2.html

redirect与permanent测试

1. [root@Web01 conf.d]# vim rewrite.conf
2. server {
3.         listen 80;
4.         server_name rewrite.koten.com;
5.         root /code;
6. 
7. location /test {
8.                 #临时重定向
9. rewrite ^(.*)$  http://www.koten.vip redirect;    
10.                 #return 302 http://www.koten.vip
11. 
12.                 #永久重定向
13.                 #rewrite ^(.*)$  http://www.koten.vip permanent;  
14.                 #return 301 http://www.koten.vip;
15.         }
16. }
17. ~                                                  
18. ~                                                  
19. "rewrite.conf" 12L, 356C written 
20. [root@Web01 conf.d]# systemctl restart nginx

访问rewrite.koten.com/test,定向到www.koten.vip

 

Rewrite使用案例

我们先开启rewrite日志对规则进行匹配调试

rewrite_log on;  #加入到/etc/nginx/nginx.conf中

案例1:用户访问/abc/1.html实际上真实访问的是/ccc/bbb/2.html中

1. [root@Web01 conf.d]# mkdir -p /code/rewrite/ccc/bbb/
2. [root@Web01 conf.d]# echo '/ccc/bbb/2.html' > /code/rewrite/ccc/bbb/2.html
3. [root@Web01 conf.d]# vim rewrite.conf
4. server {
5.         listen 80;
6.         server_name rewrite.koten.com;
7.         root /code/rewrite;
8. 
9. location /abc {
10. rewrite (.*) /ccc/bbb/2.html redirect;
11.                 #return 302 /ccc/bbb/2.html
12.         }
13. }
14. ~                                                  
15. ~                                                  
16. ~                                                  
17. ~                                                  
18. ~                                                  
19. "rewrite.conf" 10L, 217C written 
20. [root@Web01 conf.d]# systemctl restart nginx

案例2:用户访问/2018/ccc/bbb/2.html实际上真实访问的是/2023/ccc/bbb.2.html

1. [root@Web01 conf.d]# mkdir -p /code/rewrite/2023/ccc/bbb/
2. [root@Web01 conf.d]# echo '/2023/ccc/bbb/2.html' > /code/rewrite/2023/ccc/bbb/2.html
3. [root@Web01 conf.d]# vim rewrite.conf
4. server {
5.         listen 80;
6.         server_name rewrite.koten.com;
7.         root /code/rewrite;
8. 
9. location /2018 {
10. rewrite ^/2018/(.*) /2023/$1 redirect;
11.         }
12. }
13. ~                                                  
14. ~                                                  
15. ~                                                  
16. ~                                                  
17. ~                                                  
18. ~                                                  
19. "rewrite.conf" 9L, 188C written  
20. [root@Web01 conf.d]# systemctl restart nginx

案例3:用户访问/test实际上访问的是https://www.koten.vip

1. [root@Web01 conf.d]# vim rewrite.conf
2. server {
3.         listen 80;
4.         server_name rewrite.koten.com;
5. 
6. location /test {
7. rewrite (.*) https://www.koten.vip redirect;
8.         }
9. }
10. ~                                                  
11. ~                                                  
12. ~                                                  
13. ~                                                  
14. ~                                                  
15. ~                                                  
16. ~                                                  
17. "rewrite.conf" 8L, 154C written
18. [root@Web01 conf.d]# systemctl restart nginx

目录
相关文章
|
13天前
|
人工智能 云计算 网络架构
阿里云引领智算集群网络架构的新一轮变革
11月8日~10日在江苏张家港召开的CCF ChinaNet(即中国网络大会)上,众多院士、教授和业界技术领袖齐聚一堂,畅谈网络未来的发展方向,聚焦智算集群网络的创新变革。
阿里云引领智算集群网络架构的新一轮变革
|
14天前
|
负载均衡 Dubbo 算法
集群容错架构设计
集群容错架构设计
25 1
集群容错架构设计
|
12天前
|
人工智能 运维 网络架构
阿里云引领智算集群网络架构的新一轮变革
11月8日至10日,CCF ChinaNet(中国网络大会)在江苏张家港召开,众多院士、教授和技术领袖共聚一堂,探讨网络未来发展方向。阿里云研发副总裁蔡德忠发表主题演讲,展望智算技术发展趋势,提出智算网络架构变革的新思路,发布高通量以太网协议和ENode+超节点系统规划,引起广泛关注。阿里云HPN7.0引领智算以太网生态蓬勃发展,成为业界标杆。未来,X10规模的智算集群将面临新的挑战,Ethernet将成为主流方案,推动Scale up与Scale out的融合架构,提升整体系统性能。
|
10天前
|
存储 缓存 NoSQL
【赵渝强老师】Memcached集群的架构
Memcached 是一个高性能的分布式内存对象缓存系统,通过在内存中维护一个巨大的 Hash 表来存储各种格式的数据,如图像、视频、文件及数据库检索结果等。它主要用于减轻数据库压力,提高网站系统的性能。Memcached 不支持数据持久化,因此仅作为缓存技术使用。其数据分布式存储由客户端应用程序实现,而非服务端。
【赵渝强老师】Memcached集群的架构
|
19天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
55 1
|
10天前
|
调度 Docker 容器
【赵渝强老师】Docker Swarm集群的体系架构
Docker Swarm自1.12.0版本起集成至Docker引擎,无需单独安装。它内置服务发现功能,支持跨多服务器或宿主机创建容器,形成集群提供服务。相比之下,Docker Compose仅限于单个宿主机。Docker Swarm采用主从架构,Swarm Manager负责管理和调度集群中的容器资源,用户通过其接口发送指令,Swarm Node根据指令创建容器运行应用。
|
11天前
|
机器学习/深度学习 运维 监控
智能运维在现代IT架构中的转型之路####
【10月更文挑战第29天】 本文旨在探讨智能运维(AIOps)如何成为现代IT架构不可或缺的一部分,通过分析其核心价值、关键技术及实践案例,揭示AIOps在提升系统稳定性、优化资源配置及加速故障响应中的关键作用。不同于传统运维模式的被动响应,智能运维强调预测性维护与自动化处理,为企业数字化转型提供强有力的技术支撑。 ####
45 0
|
8天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
7天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
7天前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
18 1
服务架构的演进:从单体到微服务的探索之旅