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


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TDN: Temporal Difference Networks for Efficient Action Recognition 论文阅读

TDN: Temporal Difference Networks for Efficient Action Recognition 论文阅读 Abstract1. Introduction2. Related work3. Temporal Difference Networks3.1. Overview3.2. Short-term TDM3.3. Long-term TDM3.4. Exemplar: TDN-ResNet 4. ExperimentsAblation studiesCompa…

智能创作时代:AI引领下的内容生产革命与效率提升

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

部署xwiki服务需要配置 hibernate.cfg.xml如何配置?

1. 定位 hibernate.cfg.xml 文件 首先&#xff0c;确保您可以在 Tomcat 的 XWiki 部署目录中找到 hibernate.cfg.xml 文件&#xff1a; cd /opt/tomcat/latest/webapps/xwiki/WEB-INF ls -l hibernate.cfg.xml如果文件存在&#xff0c;您可以继续编辑它。如果不存在&#xff…

梅兰日兰NSJ400N断路器NSJ400N可议价

梅兰日兰 NSJ400N 3 极 400 安培 600 伏交流电 紧凑型断路器 制造商的原始标签 脱扣单元&#xff1a;LS 功能 –&#xff08;长时间和短时间&#xff09; 负载侧凸耳 中断额定值&#xff1a;65kA 240 Vac 35kA 480 伏交流电压 18kA 600 伏交流电压 &#xff08;外观可能与照…

中国地面基本气象逐小时数据获取方式

环境气象数据服务平台提供了全国大约2100个点位&#xff0c;2023年1月1日至今的小时级数据。包括气温、气压、湿度、风、降水等要素。 数据基于ECMWF ERA5-Land Hourly陆面再分析资料和中国地面基本气象观测逐三小时数据&#xff0c;使用机器学习模型加工所得&#xff0c;对比…

【17-Ⅱ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础&#xff0c;通过阅读Java廖雪峰网站&#xff0c;简单速成了java&#xff0c;但对其中一些入门概念有所疏漏&#xff0c;阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

一文彻底读懂信息安全等级保护:包含等保标准、等保概念、等保对象、等保流程及等保方案(附:等保相关标准文档)

1. 什么是等级保护&#xff1f; 1.1. 概念 信息安全等级保护是指根据我国《信息安全等级保护管理办法》的规定&#xff0c;对各类信息系统按照其重要程度和保密需求进行分级&#xff0c;并制定相应的技术和管理措施&#xff0c;确保信息系统的安全性、完整性、可用性。根据等…

[C++][数据结构]哈希2:开散列/哈希桶的介绍和简单实现

前言 接着上一篇文章&#xff0c;我们知道了闭散列的弊端是空间利用率比较低&#xff0c;希望今天学习的开散列可以帮我们解决这个问题 引入 开散列法又叫链地址法(开链法)&#xff0c;首先对关键码集合用散列函数计算散列地址**&#xff0c;具有相同地址的关键码归于同一子…

数据库表自增主键超过代码Integer长度问题

数据库自增主键是 int(10) unsigned类型的字段&#xff0c;int(M) 中 M指示最大显示宽度&#xff0c;不代表存储长度&#xff0c;实际int(1)也是可以存储21.47亿长度的数字&#xff0c;如果是无符号类型的&#xff0c;那么可以从0~42.94亿。 我们的表主键自增到21.47亿后&#…

英语学习笔记3——Sorry, sir.

Sorry, sir. 对不起&#xff0c;先生。 词汇 Vocabulary umbrella n. 伞&#xff0c;保护伞 注意读音 [ʌm’brelə] 英国人离不开雨伞。 please 请 特殊用法&#xff1a;让路&#xff08;升调&#xff09;      用餐礼仪&#xff08;平调&#xff09;      求求你…

大数据信用和征信报告的区别和联系,一定不要搞混了!

在当今数据驱动的社会&#xff0c;大数据的应用已经深入到各个领域。其中&#xff0c;大数据信用和征信报告成为金融、经济等领域中两个重要的概念。那么&#xff0c;大数据信用和征信报告有什么区别和联系呢? 一、定义与区别 1、大数据信用 大数据信用是指利用大数据技术&…

鸿蒙OpenHarmony技术:【Docker编译环境】

Docker环境介绍 OpenHarmony为开发者提供了两种Docker环境&#xff0c;以帮助开发者快速完成复杂的开发环境准备工作。两种Docker环境及适用场景如下&#xff1a; 独立Docker环境&#xff1a;适用于直接基于Ubuntu、Windows操作系统平台进行版本编译的场景。基于HPM的Docker环…

数学:人工智能领域的基石与灵魂

在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到了我们生活的方方面面&#xff0c;从智能家居、智能医疗到自动驾驶、智能客服&#xff0c;AI无处不在。然而&#xff0c;当我们赞叹于AI的神奇时&#xff0c;却往往忽视了其背后的推动力——数学…

2024.5.10

TCP服务器端 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//设置窗口大小和窗口大小固定this->resize(727,879);this->setFixedSize(727,879);//创建…

泰尔指数和泰尔指数模型:代码、案例及复现

泰尔指数模型是衡量个人或地区收入差距的重要工具。参考朱红根&#xff08;2023年&#xff09;老师的方法&#xff0c;《农业经济问题》使用泰尔指数分析了中国不同地区数字乡村发展水平的差异。该资料包括了Stata全流程代码、案例数据、参考文献&#xff0c;并提供了Excel计算…

解决mybatis的配置文件没代码提示的问题

1.将org.apache.ibatis.builder.xml包里的两个dtd文件复制出来&#xff0c;jar包里复制 2.复制dtd的url地址&#xff1a; http://mybatis.org/dtd/mybatis-3-mapper.dtd 一样的做法&#xff01; 3.关闭两个配置文件&#xff0c;重新打开&#xff0c;就可以有代码提示了&…

【Linux】Linux——Centos7安装Tomcat

1.下载Tomcat 安装包 官网地址&#xff1a;Apache Tomcat - Apache Tomcat 9 Software Downloadshttps://tomcat.apache.org/download-90.cgi 2.将下载的安装包上传到 Xftp 上&#xff0c;我是直接放到 usr 下了 3.将安装包解压到 /usr/local/ tar -zxvf apache-tomcat-9.0.8…

Java入门——类和对象(上)

经读者反映与笔者考虑&#xff0c;近期以及往后内容更新将主要以java为主&#xff0c;望读者周知、见谅。 类与对象是什么&#xff1f; C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 JAVA是基于面向对…

c++:(map和set的底层简单版本,红黑树和AVL树的基础) 二叉搜索树(BST)底层和模拟实现

文章目录 二叉搜索树的概念二叉搜索树的操作二叉搜索树的查找find 二叉搜索树的模拟实现构造节点insertfinderase(细节巨多,面试可能会考)a.叶子节点b.有一个孩子左孩子右孩子 c.有两个孩子注意: erase代码 中序遍历 二叉搜索树的应用k模型k模型模拟实现的总代码 k-value模型k-…

Python语言基础学习(上)

目录 一、常量和表达式 二、变量和类型 2.1 认识变量 2.2 定义变量 2.3 变量类型 1、整数 int 2、浮点数&#xff08;小数&#xff09;float 3、字符串 str 4、布尔类型 2.4 类型转换 三、注释 3.1 单行注释 3.2 文档注释&#xff08;或者多行注释&#xff09; …