zoukankan      html  css  js  c++  java
  • nginx重定向

    原文链接:https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite
    句法: rewrite regex replacement [flag];
    默认: —
    语境: server, location,if
    如果指定的正则表达式与请求 URI 匹配,则 URI 将按照replacement字符串中的指定进行更改。这些rewrite指令按照它们在配置文件中的出现顺序依次执行。可以使用标志来终止对指令的进一步处理。如果替换字符串以“ http://”、“ https://”或“ $scheme”开头,则处理停止并将重定向返回给客户端。

    可选flag参数可以是以下之一:

    last
    停止处理当前的ngx_http_rewrite_module指令集 并开始搜索与更改的 URI 匹配的新位置;
    break
    ngx_http_rewrite_module与break指令一样 停止处理当前的指令集 ;
    redirect
    返回一个带有 302 代码的临时重定向;如果替换字符串不以“ http://”、“ https://”或“ $scheme”开头,则使用;
    permanent
    返回带有 301 代码的永久重定向。
    完整的重定向 URL 是根据请求方案 ( $scheme) 以及 server_name_in_redirect和 port_in_redirect指令形成的。

    例子1:

    server {
        ...
        rewrite ^ www.baidu.com;
        ...
    }
    

    然后重启nginx配置,浏览器访问被重定向的URL,可以看到我们已经成功重定向到百度了。

    [root@localhost html]# curl -i URL
    HTTP/1.1 302 Moved Temporarily
    Server: nginx/1.20.1
    Date: Fri, 03 Sep 2021 21:57:32 GMT
    Content-Type: text/html
    Content-Length: 145
    Connection: keep-alive
    Location: https://www.baidu.com
    
    <html>
    <head><title>302 Found</title></head>
    <body>
    <center><h1>302 Found</h1></center>
    <hr><center>nginx/1.20.1</center>
    </body>
    </html>
    

    例子2:

    server {
        ...
        rewrite ^(/download/.*)/media/(.*)..*$ $1/mp3/$2.mp3 last;
        rewrite ^(/download/.*)/audio/(.*)..*$ $1/mp3/$2.ra  last;
        return  403;
        ...
    }
    

    但是如果这些指令放在“ /download/”位置,last标志应该被替换 break,否则nginx将进行10个循环并返回500错误:

    location /download/ {
        rewrite ^(/download/.*)/media/(.*)..*$ $1/mp3/$2.mp3 break;
        rewrite ^(/download/.*)/audio/(.*)..*$ $1/mp3/$2.ra  break;
        return  403;
    }
    

    如果replacement字符串包含新的请求参数,则先前的请求参数会附加在它们之后。如果这是不希望的,在替换字符串的末尾放置一个问号可以避免附加它们,例如:

    重写 ^/users/(.*)$ /show?user=$1? 最后的;
    如果正则表达式包含“ }”或“ ;”字符,则整个表达式应该用单引号或双引号括起来。

    句法: rewrite_log on | off;
    默认:
    rewrite_log off;
    语境: http, server, location,if
    启用或禁用将ngx_http_rewrite_module 模块指令处理结果记录到级别的error_log中notice。

    句法: set $variable value;
    默认: —
    语境: server, location,if
    value为指定的 设置 a variable。该value可以包含文本,变量,他们的组合。

    句法: uninitialized_variable_warn on | off;
    默认:
    uninitialized_variable_warn 开启;
    语境: http, server, location,if
    控制是否记录有关未初始化变量的警告。

  • 相关阅读:
    微信小程序的scheme码
    微信小程序的简单总结(uni-app)
    ES7-ES11新特性
    Promise 总结
    uni-app创建项目及使用 vant-weapp
    vscode 插件整理
    el-upload 组件总结
    从输入URL到页面显示过程中发生了什么
    实验 1:Mininet 源码安装和可视化拓扑工具
    2020软件工程第一次作业
  • 原文地址:https://www.cnblogs.com/pengpengboshi/p/15339095.html
Copyright © 2011-2022 走看看