Nginx rewrite项目练习
Nginx rewrite练习
1、访问ip/xcz,返回400状态码,要求用rewrite匹配/xcz
a、访问/xcz返回400
b、访问/hello时正常访问xcz.html页面
server {listen 192.168.99.137:80;server_name 192.168.99.137;charset utf-8;root /var/www/html;location / {root /var/www/html;rewrite ^/xcz$ /q.html last;rewrite ^/hello$ /xcz.html last;index index.html index.htm index.php;}location = /q.html {return 400;}
}


2、访问http://kgc.com/ 时跳转至 http://jd.com
server {listen 192.168.99.137:80;server_name kgc.com;charset utf-8;root /var/www/html;location / {root /var/www/html;if ($host ~* kgc.com ) {rewrite .* http://jd.com permanent;}index index.html index.htm index.php;}}
windows hosts文件添加
192.168.99.137 kgc.com

3、访问http://kgc.com/a/1.html时跳转至http://jd.com/a/1.html
server {listen 192.168.99.137:80;server_name kgc.com;charset utf-8;root /var/www/html;location / {root /var/www/html;if ($host ~* kgc.com ) {rewrite /a/1.html http://jd.com/a/1.html permanent;}index index.html index.htm index.php;}}

4、通过http://kgc.com访问nginx根目录下的index.html
通过http://alice.kgc.com访问http://kgc.com/alice
通过http://jack.kgc.com访问http://kgc.com/jack
cd /var/www/html
mkdir jack alice
echo jack.... > jack/index.html
echo alice... > alice/index.html
windows hosts文件添加
192.168.99.137 kgc.com
192.168.99.137 jack.kgc.com
192.168.99.137 alice.kgc.com
ngnix.conf配置
server {listen 192.168.99.137:80;server_name kgc.com;charset utf-8;root /var/www/html;location / {root /var/www/html;if ($host = kgc.com ) {break;}if ( $host ~* "^(.*)\.kgc\.com$" ) {set $user $1;rewrite .* http://kgc.com/$user permanent;}}location /jack {root /usr/share/nginx/html;index index.html index.hml;}location /alice {root /usr/share/nginx/html;index index.html index.hml;}}
通过http://alice.kgc.com访问http://kgc.com/alice

访问jack.kgc.com

5、将所有URL 重定向到加上 .html 后缀的 URL,例:aa.com/a==>aa.com/a.html。
server {listen 192.168.99.137:80;server_name aa.com;charset utf-8;root /var/www/html;location / {root /var/www/html;if ($request_uri !~* "\.html$") {rewrite ^/(.*)$ /$1.html break;}}}

6、将所有 .html 结尾的 URL 重定向到去掉 .html 后缀的 URL,例:aa.com/a.html==>aa.com/a。
if ($request_uri ~* "\.html$") {rewrite ^/(.*)\.html$ /$1 break;}

7、将所有 /blog/post/<id> 的请求重定向到 /blog/article/<id>,id为数字。
server {listen 192.168.0.116:80;server_name www.clean.com;charset utf-8;root /var/www/html/clean;location ~ ^/blog/post/(\d+)/$ {root /var/www/html/clean;rewrite ^/blog/post/(\d+)/$ /blog/article/$1 last;index index.html index.htm index.php;}location /article {root /var/www/html/clean/blog;index index.html index.htm index.php;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
访问192.168.0.116/post/1/

脚本:
#!/usr/bin/bashread -p "测试题目号码:" num#检查nginx配置文件是否正确,并根据结果重启nginx服务。
function nginx_test {nginx -t &> /dev/nullif [ $? -eq 0 ]; thensystemctl restart nginxecho 'nginx配置文件正确'elseecho "nginx配置文件有误"exit $numfi}case $num in
1)echo '访问ip/xcz,返回400状态码,要求用rewrite匹配/xcz,要求:a、访问/xcz返回400
b、访问/hello时正常访问xcz.html页面'# 生成Nginx配置,重定向/xcz到/q.html返回400,/hello到/xcz.htmlcat >/etc/nginx/conf.d/test0506.conf <<EOFserver {listen 192.168.99.137:80;server_name 192.168.99.137;charset utf-8;root /var/www/html;location / {root /var/www/html;rewrite ^/xcz$ /q.html last;rewrite ^/hello$ /xcz.html last;index index.html index.htm index.php;}location = /q.html {return 400;}
}
EOF# 创建xcz.html页面内容cat >/var/www/html/xcz.html <<EOF
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1>xcz</h1>
</body>
</html>
EOF
nginx_test ;;
2)echo '访问http://kgc.com/ 时跳转至 http://jd.com'cat >/etc/nginx/conf.d/test0506.conf <<EOFserver {listen 192.168.99.137:80;server_name kgc.com;charset utf-8;root /var/www/html;location / {root /var/www/html;if ( \$host ~ kgc.com ) {rewrite .* http://jd.com permanent;}index index.html index.htm index.php;}}
EOF
nginx_test ;;
3)echo '访问http://kgc.com/a/1.html时跳转至http://jd.com/a/1.html'cat >/etc/nginx/conf.d/test0506.conf <<EOFserver {listen 192.168.99.137:80;server_name kgc.com;charset utf-8;root /var/www/html;location / {root /var/www/html;if ( \$host ~ kgc.com ) {rewrite /a/1.html http://jd.com/a/1.html permanent;}index index.html index.htm index.php;}}
EOF
nginx_test ;;
4)echo '通过http://kgc.com访问nginx根目录下的index.html
通过http://alice.kgc.com访问http://kgc.com/alice
通过http://jack.kgc.com访问http://kgc.com/jack'cd /var/www/htmlmkdir jack aliceecho jack.... >jack/index.htmlecho alice... >alice/index.html# 配置基于域名的根目录变更,测试并重启Nginxcat >/etc/nginx/conf.d/test0506.conf <<EOFserver {listen 192.168.99.137:80;server_name kgc.com;charset utf-8;root /var/www/html;location / {root /var/www/html;if ( \$host = kgc.com ) {break;}if ( \$host ~* "^(.*)\.kgc\.com$" ) {set \$user \$1;rewrite .* http://kgc.com/\$user permanent;}}location /jack {root /usr/share/nginx/html;index index.html index.hml;}location /alice {root /usr/share/nginx/html;index index.html index.hml;}}
EOF
nginx_test ;;
5)# 题目5:处理URL添加.html后缀的重定向规则echo '将所有URL 重定向到加上 .html 后缀的 URL,例:aa.com/a==>aa.com/a.html。'cat >/etc/nginx/conf.d/test0506.conf <<EOFserver {listen 192.168.99.137:80;server_name aa.com;charset utf-8;root /var/www/html;location / {root /var/www/html;if (\$request_uri !~* "\.html$") {rewrite ^/(.*)$ /\$1.html break;}}}
EOF# 创建示例页面jkl.html,进行配置、测试、重启cat >/var/www/html/jkl.html <<EOF
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1>jkl</h1>
</body>
</html>
EOF
nginx_test ;;
6)# 题目6:处理URL移除.html后缀的重定向规则echo '将所有 .html 结尾的 URL 重定向到去掉 .html 后缀的 URL,例:aa.com/a.html==>aa.com/a'cat >/etc/nginx/conf.d/test0506.conf <<EOFserver {listen 192.168.99.137:80;server_name aa.com;charset utf-8;root /var/www/html;location / {root /var/www/html;rewrite ^/(.*)\.html$ /\$1 permanent;}location /jk {root /var/www/html;index index.html index.htm index.php;}}
EOFmkdir -p /var/www/html/jktouch /var/www/html/jk/index.html cat >/var/www/html/jk/index.html <<EOF
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1>jk666</h1>
</body>
</html>
EOF
nginx_test ;;
7)echo '将所有 /blog/post/<id> 的请求重定向到 /blog/article/<id>,id为数字。'cat >/etc/nginx/conf.d/test0506.conf <<EOFserver {listen 192.168.99.137:80;server_name 192.168.99.137;charset utf-8;root /var/www/html;location ~ ^/blog/post/(\d+)/$ {root /var/www/html;rewrite ^/blog/post/(\d+)/$ /blog/article/\$1 last;index index.html index.htm index.php;}location /post {root /var/www/html/blog;index index.html index.htm index.php;}location /article {root /var/www/html/blog;index index.html index.htm index.php;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
EOF
# 创建必要的目录结构和索引文件,配置重定向规则,测试并重启mkdir -p /var/www/html/blog/article/1touch /var/www/html/blog/article/1/index.htmlmkdir -p /var/www/html/blog/post/1touch /var/www/html/blog/post/1/index.htmlcat >/var/www/html/blog/article/1/index.html <<EOF
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1>1</h1>
</body>
</html>
EOF
nginx_test ;;
*)# 如果输入的不是1-7中的任意一个数字,显示错误信息并退出echo "一共7题,输入错误"exit 8;;
esac相关文章:
Nginx rewrite项目练习
Nginx rewrite练习 1、访问ip/xcz,返回400状态码,要求用rewrite匹配/xcz a、访问/xcz返回400 b、访问/hello时正常访问xcz.html页面server {listen 192.168.99.137:80;server_name 192.168.99.137;charset utf-8;root /var/www/html;location / {root …...
2024,AI手机“元年”? | 最新快讯
文 | 伯虎财经,作者 | 铁观音 2024年,小米、荣耀、vivo、一加、努比亚等品牌的AI手机新品如雨后春笋般涌现。因此,这一年也被业界广泛视为AI手机的“元年” 试想,当你轻触屏幕,你的手机不仅响应你的指令,更…...
5月9(信息差)
🌍 可再生能源发电量首次占全球电力供应的三成 🎄马斯克脑机接口公司 Neuralink 计划将 Link 功能扩展至现实世界,实现控制机械臂、轮椅等 马斯克脑机接口公司 Neuralink 计划将 Link 功能扩展至现实世界,实现控制机械臂、轮椅等…...
leetcode203-Remove Linked List Elements
题目 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5] 示例 2: 输入&…...
2024付费进群系统,源码及搭建变现视频课程(教程+源码)
自从我做资源站项目盈利稳定后,我越来越对网站类项目感兴趣了,毕竟很多网站类项目还是需要一定技术门槛的,可以过滤掉一些人,很多新人做项目就只盯着短视频,所以网站类项目也就没那么的卷。 这个付费进群系统…...
深入理解Django:中间件与信号处理的艺术
title: 深入理解Django:中间件与信号处理的艺术 date: 2024/5/9 18:41:21 updated: 2024/5/9 18:41:21 categories: 后端开发 tags: Django中间件信号异步性能缓存多语言 引言 在当今的Web开发领域,Django以其强大的功能、简洁的代码结构和高度的可扩…...
rk3588局域网推流
最近无意间看见在网上有使用MediaMtx插件配合ffmpeg在Windows来进行推流,然后在使用其他软件进行拉流显示数据图像的,既然windows都可以使用 ,我想linux应该也可以,正好手上也有一块RK3588的开发板,就测试了一下&#…...
Android虚拟机机制
目录 一、Android 虚拟机 dalvik/art(6版本后)二、Android dex、odex、oat、vdex、art区别 一、Android 虚拟机 dalvik/art(6版本后) 每个应用都在其自己的进程中运行,都有自己的虚拟机实例。ART通过执行DEX文件可在设…...
【触摸案例-手势解锁案例-按钮高亮 Objective-C语言】
一、我们来说这个self.btns,这个问题啊,为什么不用_btns, 1.我们说,在懒加载里边儿,经常是写下划线啊,_btns,为什么不写,首先啊,这个layoutSubviews:我们第一次,肯定会去执行这个layoutSubviews: 然后呢,去懒加载这个数组, 然后呢,接下来啊,走这一句话, 第一次…...
ChatPPT开启高效办公新时代,AI赋能PPT创作
目录 一、前言二、ChatPPT的几种用法1、通过在线生成2、通过插件生成演讲者模式最终成品遇到问题改进建议 三、ChatPPT其他功能 一、前言 想想以前啊,为了做个PPT,我得去网上找各种模板,有时候还得在某宝上花钱买。结果一做PPT,经…...
【C语言项目】贪吃蛇(上)
个人主页 ~ gitee仓库~ 欢迎大家来到C语言系列的最后一个篇章–贪吃蛇游戏的实现,当我们实现了贪吃蛇之后,我们的C语言就算是登堂入室了,基本会使用了,当然,想要更加熟练地使用还需要多多练习 贪吃蛇 一、目标二、需要…...
LeNet-5上手敲代码
LeNet-5 LeNet-5由Yann LeCun在1998年提出,旨在解决手写数字识别问题,被认为是卷积神经网络的开创性工作之一。该网络是第一个被广泛应用于数字图像识别的神经网络之一,也是深度学习领域的里程碑之一。 LeNet-5的整体架构: 总体…...
javaWeb入门(自用)
1. vue学习 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script src"https://unpkg.com/vue2"></script> </head> <body><div id"…...
web3风格的网页怎么设计?分享几个,找找感觉。
web3风格的网站是指基于区块链技术和去中心化理念的网站设计风格。这种设计风格强调开放性、透明性和用户自治,体现了Web3的核心价值观。 以下是一些常见的Web3风格网站设计元素: 去中心化标志:在网站的设计中使用去中心化的标志࿰…...
ASP.NET MVC(-)表单的提交、获取表单数据
FromCollection 方式...
[AIGC] 《MyBatis-Plus 结合 Spring Boot 的动态数据源介绍及 Demo 演示》
在现代的 Web 应用开发中,Spring Boot 已经成为了一种流行的框架选择。而 MyBatis-Plus 则为 MyBatis 框架提供了更强大的功能和便利。当它们结合使用时,动态数据源的运用变得更加简单和高效。 动态数据源的概念允许我们在运行时根据不同的条件或需求选…...
【华为OD机试C卷D卷】部门人力分配(C++/Java/Python)
【华为OD机试】-(A卷+B卷+C卷+D卷)-2024真题合集目录 【华为OD机试】-(C卷+D卷)-2024最新真题目录 题目描述 部门在进行需求开发时需要进行人力安排。 当前部门需要完成 N 个需求,需求用 requirements 表述,requirements[i] 表示第 i 个需求的工作量大小,单位:人月。 这部…...
毕业设计:《基于 Prometheus 和 ELK 的基础平台监控系统设计与实现》
前言 《基于 Prometheus 和 ELK 的基础平台监控系统设计与实现》,这是我在本科阶段的毕业设计,通过引入 Prometheus 和 ELK 架构实现企业对指标与日志的全方位监控。并且基于云原生,使用容器化持续集成部署的开发方式,通过 Sprin…...
docker私有仓库部署与管理
一、搭建本地公有仓库 1.1 首先下载registry镜像 docker pull registry 1.2 在daemon.json文件中添加私有镜像仓库地址并重新启动docker服务 vim /etc/docker/daemon.json 1.3 运行registry容器 docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restartal…...
2024第六届济南国际大健康产业博会将于5月27日如期开幕
由山东省城市经济学会、山东省科学养生协会主办的第六届中国(济南)国际大健康产业博览会,将于5月27-29日,在济南黄河国际会展中心盛大举办。 近年来,健康越来越受到大众的重视,在我国经济重要的转型阶段成…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
