首页 > 系统相关 >web群集--nginx实现重定向与重写操作的详细配置过程详与案例展示

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

时间:2024-09-13 17:51:04浏览次数:11  
标签:web 重定向 -- URL nginx test path com

文章目录

前言

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

什么是重定向?

重定向,是指当用户访问一个网址时,服务器自动将他们引导到另一个网址。这就像是你想去的餐馆换了地址,服务员帮你引导到新地点一样。在技术层面上,重定向是一种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的页面)
在这里插入图片描述

标签:web,重定向,--,URL,nginx,test,path,com
From: https://blog.csdn.net/lwxvgdv/article/details/142180121

相关文章

  • 来云栖大会!探展云上开发,沉浸式体验云原生 + AI 新奇玩法
    2024云栖大会来了!本届云栖大会将于9月19日至9月21日在杭州云栖小镇召开汇集全球最新云计算、AI硬科技云栖大会的主论坛将设置三个对话环节,大模型、自动驾驶和机器人领域的领军技术人和明星创业者将分享AI前沿趋势和应用进展。2024云栖大会主论坛议程发布!揭秘最......
  • 九种加密源代码的实用方法,守护你的技术宝藏!
    源代码不仅是项目的核心,更是企业的宝贵资产。如何有效保护源代码安全,防止泄露和篡改,是每位开发者和企业必须面对的重要课题。下面带来九种加密源代码的实用方法,助你构建多层次的防护体系!1.文件级加密:这是最基础也最直接的方法。利用安企神软件,对单个或一组源代码文件进行......
  • 《Civilization: Beyond Earth》启动失败?《文明太空》msvcr110.dll问题解决方案大放送
    当您在尝试启动《文明:太空》(Civilization:BeyondEarth)时遇到“找不到msvcr110.dll”或“msvcr110.dll缺失”的错误提示,这意味着您的计算机上缺少或损坏了MicrosoftVisualC++2012运行时库中的一个关键组件。msvcr110.dll是许多基于C++开发的游戏和应用程序正常运行所必需的......
  • 《圣剑传说Visions of Mana》游戏崩溃黑屏提示“找不到OpenCL.dll”该怎么修复?圣剑传
    当《圣剑传说VisionsofMana》游戏崩溃黑屏提示“找不到OpenCL.dll”时,可尝试以下方法修复。首先,从正规网站下载与系统匹配的OpenCL.dll文件。然后将其放入系统目录中,如System32文件夹。还可以检查显卡驱动,更新或重新安装显卡驱动程序。本篇将为大家带来《圣剑传说Visionsof......
  • 《星球大战:亡命之徒》游戏启动时崩溃弹窗“找不到mfc100.dll”该怎么办?星球大战亡命之
    当《星球大战:亡命之徒》游戏启动时崩溃弹窗提示“找不到mfc100.dll”,可以这样做:首先,从可靠的网站下载mfc100.dll文件,要注意与系统位数匹配。然后将其复制到系统的System32文件夹中。也可以尝试重新安装游戏相关组件或者修复系统,看是否能解决问题。本篇将为大家带来《星球大战:亡......
  • 《祇:女神之路》游戏启动时崩溃弹窗“找不到d3d9.dll”文件该怎么解决?祇:女神之路游戏黑
    若《祇:女神之路》游戏启动时因找不到“d3d9.dll”文件而崩溃弹窗。可尝试重新安装游戏,也可从正规网站下载该文件放入系统文件夹。还能安装或更新DirectX9.0,或者检查显卡驱动是否正常,以此来解决问题。本篇将为大家带来《祇:女神之路》游戏启动时崩溃弹窗“找不到d3d9.dll”文件该......
  • steam开风灵月影会不会封号?Steam玩家必看:风灵月影修改器使用与封号风险解析
    在Steam平台上使用风灵月影这类游戏修改器,其封号风险主要取决于玩家的具体使用方式和游戏类型。以下是对此问题的详细解析:一、风灵月影修改器的基本概述风灵月影修改器主要提供单机游戏的修改功能,通过修改游戏数据来增强玩家的游戏体验。这些修改器通常不会对Steam平台本身造......
  • ENSP 某台设备出现乱码的情况
    故障现象:新建拓扑没问题,打开其他人发的拓扑就会出现乱码(或者打开ENSP的示例也会出现问题),配置文档可以正常导出不受影响。故障发现时间:2022年底故障原因:windows系统BUG,常见于inter13代CPU(例如I5-13500)处理方法1:重装系统(一劳永逸)处理方法2:例如R1设备出现乱码,可以重新拖一台同......
  • 我开通了博客园会员 -- 6181
    还是那句老话:十年河东,十年河西,莫欺少年穷学无止境,精益求精自12年毕业已12个年头了,特意看了看自己的博客园园龄11年11月,自毕业以来,一直都在和程序打交道,从当初的初级程序员,晋升中/高程序员,到现在的无层级程序员。之所以称自己为无层级程序员,是因为我目前在一家创业公司工作,公司......
  • 云渲染与AI渲染分别是什么?两者的优势对比
    云渲染和AI渲染是两种先进的渲染技术,它们各自具有独特的优势和应用场景。下面针对两种情况来简单说明下。1、云渲染:-定义:云渲染是一种利用远程服务器(云端)来处理和生成渲染效果的技术。它允许用户将计算密集型的任务转移到云端,从而减轻本地硬件的负担。-优势:-高效快速:通......