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
    控制是否记录有关未初始化变量的警告。

  • 相关阅读:
    ASP.NET + EF + SQL Server搭建个人博客系统新手系列(一):界面展示
    PHP中文乱码分类及解决办法大全
    分享一个根据具体的日期判断星座的PHP函数
    WHERE条件中or与union引起的全表扫描的问题
    linux下SVN CVS命令大全
    Ubuntu装完后要做的几件事
    Table被web编程弃用的原因
    PHP json_decode返回null解析失败原因
    powerpoint教程资料,PPT的
    一些matlab教程资源收藏,使用matlab编程的人还是挺多的
  • 原文地址:https://www.cnblogs.com/pengpengboshi/p/15339095.html
Copyright © 2011-2022 走看看