码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • nginx学习记录-URL Rewrite


    1. URL Rewrite

    1.1 基本概念

    有的时候我们访问后台网站时,会携带大量的参数,比如/test?id=1,像这种ur就会携带一些参数,由于有些参数名会携带一些敏感信息,我们希望在url中隐藏传递的参数,比如将/test?id=1改写为test1.html,这就叫URL Rewrite

    如图,可以通过URL Rwrite将http://192.168.66.129/1.html改写为http://192.168.66.1:88/test?id=1

    1.2 配置指令

    基本配置指令如下:

    rewrite 改写前URL正则  改写后URL  标记

    比如:

    rewrite   ^/([0-9]+).html$   /test?id=$1   break;

    其中各个字段含义如下:

    rewrite:改写指令

     ^/([0-9]+).html$:改写前URL正则,这里表示匹配以数字开头的html文件(实际场景会更复杂)

     /test?id=$1:改写后的URL,$1表示改写前匹配到第一个正则的参数,比如1.html,此时$1就为1

    break:表示标记。标记共有四种(last, break, redirect, permanent)

    1. last:本条规则匹配完成后,继续往下匹配LOCATION URI规则
    2. break:本条规则匹配完成后,不再匹配后续的任何规则
    3. redirect:返回302临时重定向,跳转到指定URL
    4. permanent:返回301永久重定向,跳转到指定URL

    2. 一个简单例子

    在应用服务器192.168.66.1起一个服务,监听88端口和路径/test,并返回接收到的参数,详细代码如下:

    1. const http = require('http');
    2. const url = require('url');
    3. const server = http.createServer((req, res) => {
    4. const parsedUrl = url.parse(req.url, true);
    5. if(parsedUrl.pathname === '/test') {
    6. const params = parsedUrl.query;
    7. res.writeHead(200, {'Content-Type': 'text/plain'});
    8. res.end(`Received parameters: ${JSON.stringify(params)}`);
    9. } else {
    10. res.writeHead(404, {'Content-Type': 'text/plain'});
    11. res.end('Not Found');
    12. }
    13. });
    14. server.listen(88, () => {
    15. console.log('Server is running at http://localhost:88/');
    16. });

    之后,在nginx.conf中配置好rewrite规则

    配置好后,访问192.168.66.129/1.html, 得到如下结果

    这里只要是数字都行,比如换成156.html

    不能是字符,字符匹配不上正则

  • 相关阅读:
    python 基于PHP+MySQL的驾校信息管理系统
    LeetCode——贪心篇(一)
    【LeetCode】21. 合并两个有序链表
    APP 备案公钥、签名 MD5、SHA-1、SHA-256获取方法。
    windows安装wsl
    代码重构:面向单元测试
    基于象鼻虫损害优化算法求解单目标无约束问题并可视化分析附Matlab代码 (WDOA)
    Linux上的Redis客户端软件G-dis3
    java数组基础算法3.(排序:冒泡、快速排序,)
    docker安装目录迁移
  • 原文地址:https://blog.csdn.net/wuh2333/article/details/138034362
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号