web群集--nginx实现重定向与重写操作的详细配置过程详与案例展示

news2024/12/28 20:35:02

文章目录

  • 前言
    • 什么是重定向?
    • 重定向能做什么?
    • 何时需要重定向功能?
    • nginx通过什么来实现重定向和重写操作的?
    • nginx的重定向和重写有什么区别?
    • 案例展示
      • 重定向
        • 1.将所有对将所有对http://test. com 的访问重定向到http://www.test.com
      • 重写
        • 将所有对http://test. com/old-path 的访问重写为http://test. com/new-path。
        • 所有http请求重写为https

前言

在数字化的世界里,我们时常需要引导用户从一个位置到另一个位置。无论是因为网址发生变化,还是为了提供更好的用户体验,重定向功能就是我们的“导航员”,确保用户能顺利找到他们所需的内容。那么,什么是重定向?它能做什么?在什么情况下我们需要它?

什么是重定向?

重定向,是指当用户访问一个网址时,服务器自动将他们引导到另一个网址。这就像是你想去的餐馆换了地址,服务员帮你引导到新地点一样。在技术层面上,重定向是一种HTTP响应机制,服务器返回特定的状态码(如301、302),告诉浏览器去请求另一个网址。

重定向能做什么?

网址更新:
当网站结构或内容的URL发生变化时,通过重定向可以将访问旧网址的用户自动引导到新网址。这不仅有助于用户无缝过渡,也有助于保持搜索引擎优化(SEO)价值,避免旧网址的流量和排名流失。

合并网站:
如果你将多个网站或页面合并到一个新的地址,重定向可以确保所有旧网址的访问者都能找到他们需要的内容,而不会出现404错误页面。

临时调整:
在进行维护或更新时,重定向可以将用户暂时引导到备用页面或维护页面。这样,用户不会因为找不到页面而感到困惑。

提升用户体验:
根据用户的设备或地区,重定向可以将他们引导到适合的版本网站(例如,移动版或本地化版本),提供更好的用户体验。

优化广告和推广:
通过重定向,可以跟踪广告点击和推广效果。例如,你可以将广告链接重定向到含有追踪信息的页面,以分析广告效果。

何时需要重定向功能?

网站重构或升级:
当你重构或升级网站时,确保用户和搜索引擎能够顺利过渡到新结构。

内容迁移:
当你将内容从一个平台迁移到另一个平台时,使用重定向确保用户不会丢失访问路径。

SEO优化:
保持SEO排名和权重时,使用301重定向将旧网址的权重传递给新网址。

地域和设备适配:
根据用户的地理位置或设备类型进行内容适配,提供个性化体验。

应对错误页面:
当页面被删除或移动时,重定向可以避免用户遇到404错误页面,保持用户体验。

nginx通过什么来实现重定向和重写操作的?

重定向:
使用 return 指令或 rewrite 指令(带 redirect 参数)。return 指令可以直接返回一个状态码和新的 URL。例如

return 301 http://www.example.com$request_uri;

会将请求永久重定向到指定的 URL。rewrite 指令与 redirect 参数结合使用, 如

  rewrite ^/old_path(.*)$ /new_path$1 permanent; 

也能实现重定向,本次的案例展示使用的就是这种

重写:
使用 rewrite 指令。rewrite 指令允许在服务器内部重写请求的 URL,而不改变浏览器的地址栏。例如

rewrite ^/old_path(.*)$ /new_path$1 last; 

会将内部请求从 /old_path 重写到 /new_path,但用户看到的 URL 不变。重写操作可以配合 last 或 break 参数来控制重写的处理方式。

nginx的重定向和重写有什么区别?

重定向和重写在 Nginx 中用于不同的目的。重定向 (redirect) 是告诉客户端访问另一个 URL,浏览器会发起新的请求到那个 URL;而重写 (rewrite) 是在服务器端修改请求的 URL,而不通知客户端,客户端继续请求原始 URL,但 Nginx 会用修改后的 URL 处理该请求。

案例展示

重定向

1.将所有对将所有对http://test. com 的访问重定向到http://www.test.com

主要命令

rewrite ^ http://www.test.com$request_uri? permanent;

解释
这条指令用于在Nginx配置中将所有请求重定向到 http://www.test.com,并保持原有的请求 URI。^ 表示匹配所有请求,$request_uri 是请求的 URI,permanent 指定这是一个永久重定向(HTTP 301)。

配置示例

server {
        server_name www.test.com;
        location / {
        root    /www/test.com;
        index   index.html index.htm;
}
}

    server {
        listen       80;
        server_name  test.com;
        rewrite ^ http://www.test.com$request_uri? permanent;

        location / {
            root   html;
            index  index.html index.htm;
        }
}

创建测试页面

mkdir -p /www/test.com
echo web1 > /www/test.com/index.html

重启nginx使配置生效

systemctl restart nginx

浏览器访问
注:需要做dns或hosts解析
在这里插入图片描述
访问test.com

test.com

在这里插入图片描述
会自动转到www.test.com
在这里插入图片描述
浏览器点击F12查看网络也能看到
在这里插入图片描述

重写

将所有对http://test. com/old-path 的访问重写为http://test. com/new-path。

主要命令

rewrite ^/old-path(.*)$ /new-path$1 permanent;

解释
rewrite: 这是 Nginx 中的一个指令,用于重写 URL。

^/old-path(.*)$: 这是一个正则表达式模式,用于匹配请求的 URI。这个模式会匹配以 /old-path 开头的 URL,并捕获 /old-path 后面的所有内容(用 (.*) 表示)。

/new-path$1: 这是重写后的 URL 模式。$1 是正则表达式中第一个捕获组的内容(即 /old-path 后面的所有内容)。例如,如果原始请求是 /old-path/something,那么 $1 就会匹配 /something,重写后的 URL 将是 /new-path/something。

permanent: 这是一个标志,表示这是一个永久重定向(HTTP 301)。这意味着浏览器和搜索引擎应该更新他们的记录,将旧的 URL 替换为新的 URL。

这条指令的作用是将所有以 /old-path 开头的请求重定向到以 /new-path 开头的 URL,并且使用永久重定向状态码(301),以通知浏览器和搜索引擎新的 URL 位置是永久性的。

配置示例

    server {
        listen       80;
        server_name  test.com
        root /www/test.com;

        location /api {
                rewrite ^/api(.*)$ /new-api$1 permanent;
                index index.html;
}

        location /new-api {
                root /www/test.com;
                index index.html;
}
}

创建测试页面

mkdir -p /www/test.com/api
mkdir -p /www/test.com/new-api
echo api1 > /www/test.com/api/index.html
echo api2 > /www/test.com/new-api/index.html

重启使配置生效

systemctl restart nginx

浏览器访问

test.com/api

在这里插入图片描述
会自动重写到new-api
在这里插入图片描述

所有http请求重写为https

主要命令

rewrite ^ https://$host$request_uri? permanent;

解释
这条 rewrite 指令的作用是将所有 HTTP 请求重定向到对应的 HTTPS URL。例如,访问 http://example.com/page?query=1 会被重定向到 https://example.com/page?query=1。这是强制所有访问该站点的请求使用 HTTPS 的一种常见做法,以提高安全性。

配置示例
这个需要先做nginx的https访问配置
详细版
链接: nginx实现https安全访问的详细配置过程

简洁版(仅命令)
注:是自签名证书
源码安装的nginx
位置/usr/local/nginx

 openssl genrsa -out /usr/local/nginx/conf/nginx.key 2048
 openssl req -new -key /usr/local/nginx/conf/nginx.key -out /usr/local/nginx/conf/nginx.csr

一直回车即可

openssl x509 -req -days 365 -in /usr/local/nginx/conf/nginx.csr -signkey /usr/local/nginx/conf/nginx.key -out /usr/local/nginx/conf/nginx.crt

nginx的配置示例

server {
        listen 443 ssl;
        ssl_certificate /usr/local/nginx/conf/nginx.crt;
        ssl_certificate_key /usr/local/nginx/conf/nginx.key;
        location / {
            root   html;
            index  index.html index.htm;
        }

}

    server {
        listen       80;
        server_name  test.com;
        rewrite ^ https://$host$request_uri? permanent;

        location / {
            root   html;
            index  index.html index.htm;
        }

浏览器访问

http://test.com

在这里插入图片描述
会自动转到https
在这里插入图片描述

因为是自签名证书,所以会提示不安全
在这里插入图片描述
继续访问即可
在这里插入图片描述
就可以看到测试页面了(这是之前编写的测试页面,默认是nginx的页面)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2131991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【iOS】push和present的区别

【iOS】push和present的区别 文章目录 【iOS】push和present的区别前言pushpop presentdismiss简单小demo来展示dismiss和presentdismiss多级 push和present的区别区别相同点 前言 在iOS开发中,我们经常性的会用到界面的一个切换的问题,这里我们需要理清…

眼镜超声波清洗机真的有用吗?畅销款热门清洗机测评,买前必看!

随着科技的飞速发展,人们的生活水平也日益提升。眼镜,作为我们日常生活中不可或缺的物品,其重要性不言而喻。然而,许多人往往忽视了对它的定期清洁保养。尽管市面上有专门用于清洁眼镜的布,但这种方法并不能完全去除镜…

CloudFlare问题与CDN问题

昨天将腾讯云的解析转移到Cloudflare中了,结果今天发现网站崩了,显示重定向次数过多,昨天估计是因为浏览器缓存,所以没有发现问题 问题一:强制HTTPS 当时看到CloudFlare的强制https时就想到了我的宝塔面板也开着强制h…

【机器学习】结构学习的基本概念以及基于约束的结构学习和基于评分的结构学习

引言 结构学习在机器学习中是指自动发现数据中潜在的结构或模式的过程,这通常涉及到确定数据的依赖关系、变量间的相互作用或者数据的组织形式。 文章目录 引言一、结构学习1.1 目标1.2 方法1.3 应用1.4 挑战1.5 工具和技术1.6 步骤1.7 总结 二、基于约束的结构学习…

2024年法国7大最佳影响力营销平台

影响力平台是一种工具,可以帮助企业找到有影响力的人,全面管理从头到尾的营销活动,并评估其效果。这类工具能够为广告商或影响力代理机构提供以下服务: 发布营销活动,让 有影响力的人可以申请。这就是所谓的 影响力市…

QT程序的安装包制作教程

在Windows平台上开发完qt c桌面应用程序以后,需要制作一个安装包,方便生产和刻盘交货,本文记录相关流程。 目录 一、安装Qt Installer Framework 二、准备可执行程序 2.1 生成Release程序 2.2 完成依赖库拷贝 三、创建安装包程序 一、…

2024icpc江西:H.Convolution(二维前缀和,卷积核)

题目 做法 我们发现&#xff0c;K中的每个元素都乘了对应原矩阵中子矩阵&#xff08;n-k1&#xff09;* (m-l1)中的每个数。我们就直接前缀和求就好了。 #include<bits/stdc.h> #define int long long using namespace std;const int N1e310; int n,m,k,l; int a[N][N…

语言中的浮点数

浮点数相比定点数或者整数&#xff0c;为了处理小数点引入了指数&#xff0c;导致小数点的位置根据不同浮点数而不同&#xff0c;故名为Floating Point Number. 一般而言&#xff0c;IEEE754标准被大部分编程语言的浮点数使用&#xff0c;它节省了浮点数的保存空间。如不然&…

思维导图模板,看完这些步骤学会制作

思维导图模板&#xff0c;思维导图是一种非常有效的信息组织工具&#xff0c;它将复杂的信息以图形化的形式展现出来&#xff0c;便于记忆和理解。无论是用于项目管理、学习笔记整理还是头脑风暴会议记录&#xff0c;思维导图都能够帮助人们更好地梳理思路&#xff0c;提高工作…

在 ClickHouse 中进行机器学习数据建模

本文字数&#xff1a;17443&#xff1b;估计阅读时间&#xff1a;44 分钟 作者&#xff1a;Dale McDiarmid 本文在公众号【ClickHouseInc】首发 本文将探索 MLOps 的世界&#xff0c;探讨如何在 ClickHouse 中对数据进行建模和转换&#xff0c;使其成为高效的特征存储&#xff…

百收网AI发帖子怎么发?

百收网AI发帖子怎么发&#xff1f; 百家号APP怎么发内容&#xff1f;没有电脑怎么在百度发内容&#xff1f;#百家号 查看视频讲解&#xff1a;&#xff08;点击链接https://v.youku.com/v_show/id_XNjQyMjc4MjU3Ng.html&#xff1a;https://v.youku.com/v_show/id_XNjQyMjc4M…

Linux云计算 |【第三阶段】PROJECT1-DAY1

主要内容&#xff1a; 服务器硬件&#xff08;RAID磁盘阵列、IDRAC远程控制卡&#xff09;、部署LNMP动态网站&#xff08;部署LNMP平台、上线Wordpress代码、创建数据库、初始化Wordpress&#xff09; 一、服务器介绍 1、什么是服务器 服务器&#xff08;Server&#xff09…

C++入门(part 3)

前言 在前文我们讲解了C的诞生与历史&#xff0c;顺便讲解一些C的小语法&#xff0c;本文会继续讲解C的基础语法知识。 1.inline(内联函数) inline是C新加入的关键字,用inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用的地方将函数展开&#xff0c;这样每次…

数据中台 | 数据资源管理平台介绍

01 产品概述 数据资源的盘查、集成、存储、组织、共享等全方位管理能力&#xff0c;无论对于企业的数字化转型&#xff0c;还是对企业数据资产的开发、运营、交易及入表&#xff0c;都具有极为关键的作用。今天&#xff0c;小兵就来为大家介绍我们自研数据智能平台中的核心产品…

废品回收小程序搭建,回收市场的机遇

随着经济的快速发展&#xff0c;居民生活水平普遍提高&#xff0c;产生的各类废品也在不断增加&#xff0c;为废品回收市场提供了发展基础。当下&#xff0c;在大众环保意识增加下&#xff0c;废品回收行业也将成为一个具有广阔发展前景的朝阳行业&#xff01; 目前&#xff0…

C++vector类 (带你一篇文章搞定C++中的vector类)

感谢大佬的光临各位&#xff0c;希望和大家一起进步&#xff0c;望得到你的三连&#xff0c;互三支持&#xff0c;一起进步 数据结构习题_LaNzikinh篮子的博客-CSDN博客 初阶数据结构_LaNzikinh篮子的博客-CSDN博客 收入专栏&#xff1a;C_LaNzikinh篮子的博客-CSDN博客 其他专…

代码随想录27期|Python|Day54|​单调栈|​42. 接雨水|84. 柱状图中最大的矩形

42. 接雨水 根据常识可以归纳出&#xff0c;对于每一列所能够存住的水的高度 Height min(LeftMax, RightMax) - height 也就是&#xff0c;当前列的存水高度 左侧和右侧柱子的最大高度的较小值&#xff0c;减去当前列的柱子高度&#xff0c;所得到的差值。 可以验证第4列&…

spring常用注解(10)@Order

一、 1、作用 加Order()注解&#xff0c;在注解中加入数字&#xff0c;数字越小&#xff0c;优先级越高&#xff0c;最先执行。 2、使用方法 &#xff08;1&#xff09;自定义顺序 Component Order(1) public class XxxFilter extends OncePerRequestFilter{}Component Or…

什么品牌的宠物空气净化器性价比最高?352/希喂/霍尼韦尔/有哈/IAM实测对比

我开着一家猫咪咖啡馆&#xff0c;我们店貌美小猫可没少给我带来回头客~先给大家看看我的招财猫们 开了三年了&#xff0c;也是前不久店里才开始有点盈利&#xff0c;开始那段时间没少收到投诉&#xff0c;差点就干不下去了。店里养着的猫多&#xff0c;平时鱼油、冻干也没稍微…

foc入门

FOC(Field Oriented Control)磁场定向控制 foc,磁场定向控制&#xff0c;通过控制无刷电机三相电流&#xff0c;来实现对无刷电机的角度扭矩的控制。 首先先要理解无刷电机的原理&#xff0c;我们以三槽两极内转子电机进行讲解&#xff0c; 相较于有刷电机&#xff0c;无刷电…