Nginx rewrite项目练习

news2024/11/20 13:24:51

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/bash

read -p "测试题目号码:" num

#检查nginx配置文件是否正确,并根据结果重启nginx服务。
function nginx_test {
    nginx -t &> /dev/null
    if [ $? -eq 0 ]; then
        systemctl restart nginx
        echo 'nginx配置文件正确'
    else
        echo "nginx配置文件有误"
        exit $num
    fi
	}

case $num in
1)
    echo '访问ip/xcz,返回400状态码,要求用rewrite匹配/xcz,要求:a、访问/xcz返回400
b、访问/hello时正常访问xcz.html页面'
    # 生成Nginx配置,重定向/xcz到/q.html返回400,/hello到/xcz.html
    cat >/etc/nginx/conf.d/test0506.conf <<EOF
  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;
    }
}
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 <<EOF
      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;
        }
    }
EOF
nginx_test 
    ;;
3)
    echo '访问http://kgc.com/a/1.html时跳转至http://jd.com/a/1.html'
    cat >/etc/nginx/conf.d/test0506.conf <<EOF
       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;
        }
    }
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/html
    mkdir jack alice
    echo jack.... >jack/index.html
    echo alice... >alice/index.html
  # 配置基于域名的根目录变更,测试并重启Nginx
    cat >/etc/nginx/conf.d/test0506.conf <<EOF
 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;
        }
    }
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 <<EOF
      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;
     
            }
            
            }
        }
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 <<EOF
      server {
        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;
        }
        }
EOF

    mkdir -p /var/www/html/jk
    touch /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 <<EOF
     server {
        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/1
    touch /var/www/html/blog/article/1/index.html
    mkdir -p /var/www/html/blog/post/1
    touch /var/www/html/blog/post/1/index.html
    cat >/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


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

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

相关文章

深度学习论文: LightGlue: Local Feature Matching at Light Speed

深度学习论文: LightGlue: Local Feature Matching at Light Speed LightGlue: Local Feature Matching at Light Speed PDF: https://arxiv.org/pdf/2306.13643 PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: https://github.com/shanglianlm0525/…

202466读书笔记|《一天一首古诗词》——借问梅花何处落,风吹一夜满关山

202466读书笔记|《一天一首古诗词》——借问梅花何处落&#xff0c;风吹一夜满关山 上册下册 《一天一首古诗词》作者李锡琴&#xff0c;蛮早前加入书架的已购买书籍&#xff0c;这次刚好有点时间&#xff0c;利用起来读完。 赏析没有细看&#xff0c;只读了诗词部分&#xff0…

YOLOv5改进 | 注意力机制 | 理解全局和局部信息的SE注意力机制

在深度学习目标检测领域&#xff0c;YOLOv5成为了备受关注的模型之一。本文给大家带来的是能够理解全局和局部信息的SE注意力机制。文章在介绍主要的原理后&#xff0c;将手把手教学如何进行模块的代码添加和修改&#xff0c;并将修改后的完整代码放在文章的最后&#xff0c;方…

多模态模型Mini-Gemini:代码模型数据均开源,MiniCPM小钢炮2.0全家桶四连发,可以在Android 手机端上运行的大模型,效果还不错

多模态模型Mini-Gemini&#xff1a;代码模型数据均开源&#xff0c;MiniCPM小钢炮2.0全家桶四连发&#xff0c;可以在Android 手机端上运行的大模型&#xff0c;效果还不错。 多模态模型Mini-Gemini&#xff1a;代码模型数据均开源 香港中文大学终身教授贾佳亚团队提出多模态模…

印象笔记使用技巧

印象笔记使用技巧 印象笔记&#xff08;Evernote&#xff09;是一款非常流行的笔记软件&#xff0c;它为用户提供了一个方便的平台来记录、整理和管理各种信息。无论是个人生活还是工作场景&#xff0c;印象笔记都可以帮助用户提高效率、整理思绪、轻松查找信息。下面是一些印象…

gpustat 不能使用问题

突然间就不能用了&#xff0c;可能是环境出了问题&#xff0c;如果GPU没问题的话&#xff0c;那么换个环境重新安装试一下&#xff08;pip install gpustat&#xff09;&#xff0c;目前是换个环境就可以了&#xff08;做个笔记&#xff09;

Mapreduce | 案例

根据提供的数据文件【test.log】 数据文件格式&#xff1a;姓名,语文成绩,数学成绩,英语成绩 完成如下2个案例&#xff1a; &#xff08;1&#xff09;求每个学科的平均成绩 &#xff08;2&#xff09;将三门课程中任意一门不及格的学生过滤出来 &#xff08;1&#xff09;求每…

DVWS靶场全总结(详细)--主要用来复习(暂未完善,累了大体框架已成)

目录 一、环境安装 二、开始闯关 2.1暴力破解 2.1.1 low: 2.1.2 medium: 2.2命令注入 2.2.1 low: ​编辑​编辑 2.2.2 medium: 2.3跨站请求伪造&#xff08;CSRF&#xff09; 2.3.1 low: 2.3.2 medium: 2.4文件包含漏洞 2.4.1 low&#xff1a; 2.4.2 medium: 2.…

暴力数据结构之栈与队列(队列详解)

1.队列的定义 队列是一种特殊的线性表&#xff0c;它遵循先进先出&#xff08;FIFO&#xff09;的原则。在队列中&#xff0c;只允许在表的一端进行插入操作&#xff08;队尾&#xff09;&#xff0c;而在另一端进行删除操作&#xff08;队头&#xff09;。这种数据结构确保了最…

【栈】Leetcode 比较含退格的字符串

题目讲解 844. 比较含退格的字符串 算法讲解 使用栈模拟&#xff0c;但遇到#字符就让栈顶元素出栈&#xff0c;但是在写的过程中有两点需要注意&#xff1a;当#出现在第一个位置&#xff0c;需要特殊处理一下&#xff1b;当栈为空的时候&#xff0c;还出现#字符需要特殊处理…

普通人可以抓住黄金价格大涨的投资机会吗?

黄金价格的波动对于投资者来说&#xff0c;总是充满了诱惑和挑战。近期&#xff0c;全球经济形势变化多端&#xff0c;地缘政治冲突频发&#xff0c;这些因素无不对黄金市场造成影响&#xff0c;使得黄金价格出现大幅波动。那么&#xff0c;作为普通人&#xff0c;能否抓住黄金…

会赚钱的人都在做这件事:你了解吗?

在我们日常生活的点滴中&#xff0c;以及在各种场合的交互中&#xff0c;利他思维始终扮演着不可或缺的角色。当我们追求合作与共赢时&#xff0c;单方面的自我立场显然是不够的&#xff0c;真正的关键在于换位思考&#xff0c;寻找并满足对方的需求。 互利互赢的核心理念正是利…

centos安装mysql-client

直接安装&#xff1a; yum install mysql-community-client报了错误No package mysql-community-client available. 原因&#xff1a;CentOS/RHEL系统默认的软件源中并不包含MySQL软件包&#xff0c;需要通过添加第三方存储库来获取MySQL相关软件 添加源 安装MySQL官方的Yum…

【智能优化算法】白鲨智能优化算法(White Shark Optimizer,WSO)

白鲨智能优化算法(White Shark Optimizer,WSO)是期刊“KNOWLEDGE-BASED SYSTEMS”&#xff08;中科院一区期刊 IF8.6&#xff09;的2022年智能优化算法 01.引言 白鲨智能优化算法(White Shark Optimizer,WSO)的核心理念和基础灵感来自大白鲨的行为&#xff0c;包括它们在导航和…

关于Ardupilot的固定翼(plane)的控制

起因 由于项目原来是使用的四旋翼,并且是PX4版本的四旋翼; 如今需要对无人机固定翼进行控制,并要求使用Ardupilot的固件进行研究。 特定在此记录对固定翼的学习,以和大家分享观点和交流学习。 PX4和Ardupilot关系 PX4和Ardupilot都是固件,固件就是软件的意思。两者都是…

Amesim基础篇-热仿真常用模型库-Air Conditioning-Pipes

前言 基于上文对空调库各个元件的介绍&#xff0c;本文进一步将其中的管路展开。 管路介绍 1 摩擦阻力管&#xff08;R&#xff09;&#xff1a; 具有阻力特性的管路&#xff0c;通过管长以及管截面计算阻力。 2 可调节阻力管&#xff08;R&#xff09;&#xff1a; 只具有…

进一步解读英伟达 Blackwell 架构、NVlink及GB200 超级芯片

2024年3月19日&#xff0c;英伟达CEO黄仁勋在GTC大会上公布了新一代AI芯片架构BLACKWELL&#xff0c;并推出基于该架构的超级芯片GB200&#xff0c;将助推数据处理、工程模拟、电子设计自动化、计算机辅助药物设计、量子计算和生成式 AI 等领域。 为了纪念杰出的数学家David H…

设计合理的IT运维服务目录:打造高效运维的蓝图

在数字化转型的浪潮中&#xff0c;一个设计合理、内容详尽的IT运维服务目录是连接服务提供者与消费者之间的桥梁&#xff0c;它不仅体现了服务设计的专业性&#xff0c;还直接影响着运维效率和服务质量。如何设计出既合理又高效的IT运维服务目录&#xff1f;让我们结合ITIL 4框…

赣红孵联合卫东街道未保站开展未成年人保护法散落在每个角落活动

为进一步提高家长的法治意识&#xff0c;依法保障未成年人的合法权益&#xff0c;全力构建安全和谐文明家庭&#xff0c;5月8日&#xff0c;赣红孵社会组织培育中心联合卫东街道未成年人保护站在在南师附小红谷滩校区实验小学开展“未成年人保护法散落在每个角落”未成年人普法…

浅谈云计算资源和服务

目录 前言 正文 专有名词及其首字母缩写 轻量级应用服务器 云服务器ECS 专有网络VPC 其他类服务 尾声 &#x1f52d; Hi,I’m Pleasure1234&#x1f331; I’m currently learning Vue.js,SpringBoot,Computer Security and so on.&#x1f46f; I’m studying in University o…