云计算学习100天-第26天

地址重写

地址重写语法——


关于Nginx服务器的地址重写,主要用到的配置参数是rewrite
语法格式:
rewrite regex replacement flag
rewrite 旧地址   新地址    [选项]

地址重写步骤:


#修改配置文件(访问a.html重定向到b.html)
cd /usr/local/nginx/
cp conf/nginx.conf.default conf/nginx.conf  #还原配置文件
cp: overwrite 'conf/nginx.conf'? y
[root@proxy nginx]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen       80;
server_name  localhost;
rewrite  /a.html  /b.html;       #新添加地址重写,a.html重定向到b.html  
...
location / {
root   html;
index  index.html index.htm;
}
}

echo "nginx-B~~" > /usr/local/nginx/html/b.html
#重新加载配置文件
/usr/local/nginx/sbin/nginx  -s  reload

#客户端测试
http://192.168.88.5/a.html          #内容显示的是nginx-B~~,但是地址栏没有发生变化,还是a.html页面

此时配置文件中直接写rewrite  /a.html  /b.html; 配置,在测试是其实会有些问题,比如在浏览器中访问时把192.168.88.5/a.html写成192.168.88.5/a.htmldc 或者写成 192.168.88.5/dc/a.html,访问都会正常显示b.html的页面,这是因为此时写的是只要包含a.html的都会跳转,没有进行精准匹配,可以进行以下修改,只有写a.html时才会正确跳转
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {

        listen       80;
server_name  localhost;
rewrite  ^/a\.html$  /b.html;       #新添加地址重写,a.html重定向到b.html  
...

/usr/local/nginx/sbin/nginx  -s  reload

浏览器重新访问测试即可192.168.88.5/a.html,显示b.html页面内容

测试重定向——


#redirect  临时重定向,状态码302
#permanent 永久重定向,状态码301

#修改Nginx服务配置
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {

        listen       80;
server_name  localhost;
rewrite ^/a\.html$  /b.html  redirect;      #新修改,redirect重定向,测试完之后把redirect换成permanent,是一样的效果
...
location / {
root   html;
index  index.html index.htm;
}
}

#重新加载配置文件
/usr/local/nginx/sbin/nginx  -s  reload

浏览器测试,地址栏同时发生变化
http://192.168.88.5/a.html  #内容显示的是nginx-B~~,地址栏发生变化,是b.html页面

不同网站间跳转——
#修改Nginx服务配置实现访问192.168.88.5的请求重定向至www.tmooc.cn
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen       80;
server_name  localhost;
rewrite /  http://www.tmooc.cn/;        #新修改,访问旧网站的任意内容都跳转到新网站
location / {
root   html;
index  index.html index.htm;
}
}

#重新加载配置文件
/usr/local/nginx/sbin/nginx  -s  reload
#客户端测试
http://192.168.88.5     #可以成功跳转

子页面重定向——


#修改配置文件(访问192.168.88.5/下面子页面,重定向至www.tmooc.cn/下相同的子页面)
vim /usr/local/nginx/conf/nginx.conf
...
server {
listen       80;
server_name  localhost;
rewrite  /(.*)  http://www.tmooc.cn/$1;     #新修改
location / {
root   html;
index  index.html index.htm;
}
}
#重新加载配置文件
/usr/local/nginx/sbin/nginx  -s  reload
#客户端测试
http://192.168.88.5/b.html      #成功跳转

实现不同浏览器跳转到不同页面——


#创建网页目录以及对应的页面文件:
mkdir  html/firefox
echo  firefox~~  >  html/firefox/abc.html   #火狐专用页面
cho  others~~  >  html/abc.html            #其他浏览器专用页面

火狐访问192.168.88.5/abc.html时可以看到html/firefox/abc.html里面内容
其他浏览器访问192.168.88.5/abc.html时可以看到html/abc.html里面内容

#修改Nginx服务配置
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen       80;
server_name  localhost;
if ($http_user_agent ~* firefox) {  #如果用户使用了火狐浏览器就进行地址重写,让用户看到火狐专用页面,否则就是其他页面
rewrite /(.*)  /firefox/$1;     #$http_user_agent是nginx的内置变量,包含了发起 HTTP 请求的客户端的用户代理(User-Agent)字符串,比如用的什么浏览器
}
location / {
root   html;
index  index.html index.htm;
}

#重新加载配置文件
/usr/local/nginx/sbin/nginx  -s  reload
#客户端测试
用火狐浏览器与其他浏览器访问相同地址192.168.88.5/abc.html,可以得到不同结果
火狐浏览器访问192.168.88.5/abc.html,得到结果firefox~~
其他浏览器访问192.168.88.5/abc.html,得到结果others~~

其他选项测试——


#last 不再读其他语句,但还会继续匹配其他location语句
#break 不再读其他语句,结束请求

测试last不再读其他语句


#修改Nginx服务配置
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen       80;
server_name  localhost;
rewrite /a.html /b.html;        #新修改
rewrite /b.html /c.html;        #新修改
...
}
...
#重新加载配置文件
/usr/local/nginx/sbin/nginx  -s  reload
echo nginx-c~~ > html/c.html
#浏览器测试
192.168.88.5/a.html #内容显示的是nginx-c~~
#如果想要访问的是b.html的内容,可以做以下更改
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen       80;
server_name  localhost;
rewrite /a.html /b.html last;       #新修改
rewrite /b.html /c.html;
...
}
...
#重新加载配置文件
/usr/local/nginx/sbin/nginx  -s  reload
#浏览器测试访问
192.168.88.5/a.html #内容显示的是nginx-b~~

测试last会继续匹配其他location语句


vim /usr/local/nginx/conf/nginx.conf
...
location / {                #此处为默认的location
rewrite /a.html /b.html last;   #新添加
root   html;
index  index.html index.htm;
}
location /b.html {                #这里是新添加的location
rewrite /b.html /c.html;
}
...        
#重新加载配置文件
/usr/local/nginx/sbin/nginx  -s  reload
#客户端测试: http://192.168.88.5/a.html,显示为nginx-c~~

break 不再读其他语句,结束请求

vim /usr/local/nginx/conf/nginx.conf
...
location / {
rewrite /a.html /b.html break;        #break可以阻止后面的语句
root   html;
index  index.html index.htm;
}
location /b.html {
rewrite /b.html /c.html;
}
...        
#重新加载配置文件
/usr/local/nginx/sbin/nginx  -s  reload
#客户端测试: http://192.168.88.5/a.html,显示为nginx-b~~

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

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

相关文章

【Python办公】字符分割拼接工具(GUI工具)

目录 专栏导读 项目简介 功能特性 🔧 核心功能 1. 字符分割功能 2. 字符拼接功能 🎨 界面特性 现代化设计 用户体验优化 技术实现 开发环境 核心代码结构 关键技术点 使用指南 安装步骤 完整代码 字符分割操作 字符拼接操作 应用场景 数据处理 文本编辑 开发辅助 项目优势 …

Windows 命令行:dir 命令

专栏导航 上一篇:Windows 命令行:Exit 命令 回到目录 下一篇:MFC 第一章概述 本节前言 学习本节知识,需要你首先懂得如何打开一个命令行界面,也就是命令提示符界面。链接如下。 参考课节:Windows 命令…

软考高级--系统架构设计师--案例分析真题解析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言试题一 软件架构设计一、2019年 案例分析二、2020年 案例分析三、2021年 案例分析四、2022年 案例分析试题二 软件系统设计一、2019年 案例分析二、2020年 案例分…

css中的性能优化之content-visibility: auto

content-visibility: auto的核心机制是让浏览器智能跳过屏幕外元素的渲染工作,包括布局和绘制,直到它们接近视口时才渲染。这与虚拟滚动等传统方案相比优势明显,只需要一行CSS就能实现近似效果。值得注意的是必须配合contain-intrinsic-size属…

通过uniapp将vite vue3项目打包为android系统的.apk包,并实现可自动升级功能

打包vue项目,注意vite.config.ts文件和路由文件设置 vite.config.ts,将base等配置改为./ import {fileURLToPath, URL } from node:urlimport {defineConfig } from vite import vue from @vitejs/plugin-vue import AutoImport from unplugin-auto-import/vite import Com…

经营帮租赁经营板块:解锁资产运营新生态,赋能企业增长新引擎

在商业浪潮奔涌向前的当下,企业资产运营与租赁管理的模式不断迭代,“经营帮” 以其租赁经营板块为支点,构建起涵盖多元业务场景、适配不同需求的生态体系,成为众多企业破局资产低效困局、挖掘增长新动能的关键助力。本文将深度拆解…

C语言---编译的最小单位---令牌(Token)

文章目录C语言中令牌几类令牌是编译器理解源代码的最小功能单元,是编译过程的第一步。C语言中令牌几类 1、关键字: 具有固定含义的保留字,如 int, if, for, while, return 等。 2、标识符: 由程序员定义的名称,用于变…

机器学习 | Python中进行特征重要性分析的9个常用方法

在Python中,特征重要性分析是机器学习模型解释和特征选择的关键步骤。以下是9种常用方法及其实现示例: 1. 基于树的模型内置特征重要性 原理:树模型(如随机森林、XGBoost)根据特征分裂时的纯度提升(基尼不纯度/信息增益)计算重要性。 from sklearn.ensemble import Ra…

心路历程-了解网络相关知识

在做这个题材的时候,考虑的一个点就是:自己的最初的想法;可是技术是不断更新的; 以前的材料会落后,但是万变不能变其中;所以呈现出来的知识点也相对比较老旧,为什么呢? 因为最新的素…

CAT1+mqtt

文章目录 MQTT知识点mqtt数据固定报头可变报头(连接请求)有效载荷 阿里云MQTT测试订阅Topic下发数据给MQTT.fxMQTT.fx 发布消息给服务器 下载mqtt(C-嵌入式版)我的W5500项目路径使用Cat1连接阿里云平台AT指令串口连接1. 开机联网2. 激活内置SIM卡(贴片卡)3. 我这里使用连接的是…

AiPPT怎么样?好用吗?

AiPPT怎么样?好用吗?AiPPT 是一款智能高效的PPT生成工具,通过AI技术快速将主题或文档(如Word/PDF)转化为专业PPT,提供超10万套行业模板,覆盖商务、教育等22场景,支持一键生成大纲、文…

恶补DSP:2.F28335的定时器系统

一、定时器原理F28335 城市的三座时钟塔(Timer0、Timer1、Timer2)是城市时间管理的核心设施,每座均为32位精度,依靠城市能源脉冲(系统时钟 SYSCLKOUT,典型频率为150 MHz)驱动。它们由两个核心模…

用倒计时软件为考研备考精准导航 复习 模拟考试 日期倒计时都可以用

考研,是一场与时间的博弈。从决定报名的那一刻起,日历上的每一个数字都被赋予了特殊意义 —— 报名截止日、现场确认期、初试倒计时、成绩查询点…… 这些节点如同航标,指引着备考者的方向。而在这场漫长的征途里,一款精准、易用的…

React学习(七)

目录:1.react-进阶-antd-搜索2.react-进阶-antd-依赖项说明 3.react-进阶-antd-删除1.react-进阶-antd-搜索我们jsx代码里只能返回一个最顶层的根元素下拉框简化写法:把这个对象结构赋值一下:清空定义个参数类型做修改事件需要定义三个…

Unix Domain Socket(UDS)和 TCP/IP(使用 127.0.0.1)进程间通信(IPC)的比较

Unix Domain Socket(UDS)和 TCP/IP(使用 127.0.0.1 或 localhost)都是进程间通信(IPC)的方式,但它们在实现、性能和适用场景上有显著区别。以下是两者的对比:1. 通信机制Unix Domain…

SQL中对时间操作的函数

以下是SQL中常用时间操作函数的汇总,按功能分类整理,结合多个权威来源内容综合而成: 一、获取当前时间 函数名称功能说明示例适用数据库CURDATE()获取当前日期(不含时间)SELECT CURDATE(); → 2024-08-21MySQL, Mari…

NUS PC5215 Lecture分析 Week1 Python基础

NUS PC5215 Lecture分析 Week1 Python基础前言Python基础数据类型保留字表达式Import 相关库IEEE浮点数前言 课程网站 作为一名计算机本科毕业的学生,该课程有点类似于本科期间学的数值分析的进化版,大抵是教会你如何实现各种方法,诸如蒙特卡…

模型私有化部署(Ollama vLLM LMDeploy)

一、魔塔社区平台介绍 1.1 什么是魔塔社区? 魔塔(ModelScope)是由阿里巴巴达摩院推出的开源模型即服务(MaaS)共享平台,汇聚了计算机视觉、自然语言处理、语音等多领域的数千个预训练AI模型。其核心理念是…

C++编程实践--资源管理、标准库、并发与并行

文章目录 资源管理 资源访问 指向资源句柄或描述符的变量,在资源释放后立即赋予新值 lambda函数 当lambda会逃逸出函数外面时,禁止按引用捕获局部变量 避免lambda表达式使用默认捕获模式 资源分配与回收 避免出现delete this操作 使用恰当的方式处理new操作符的内存分配错误 …

“R语言+遥感”的水环境综合评价方法实践技术应用

专题一、R语言概述1.1 R语言特点(R语言)1.2 安装R(R语言)1.3 安装RStudio(R语言)(1)下载地址(2)安装步骤(3)软件配置1.4 第一个程序He…