zoukankan      html  css  js  c++  java
  • nginx之重写

    rewrite可以写在server段、location段和if段。语法:

    rewrite regexp replacement [flag]

    flag是标记。有4种标记,它们的作用如下表。

    flag说明
    last 停止处理当前上下文中的其他重写模块指令,并为重写后的uri再次进行上下文的匹配
    break 和break指令一样,都是停止处理当前上下文中的其他重写模块指令
    redirect 返回临时重定向状态码302。当replacement部分不是以"http://"或者"https://"或者"$schema"开头的时候使用,"$schema"变量表示使用的是什么协议
    permanent 返回永久重定向状态码301

    注意:

    last和break用来实现URL改写,此时浏览器中的地址不会改变,但实际上在服务器上访问的资源和路径已经改变了。

    redirect和permanent用来实现URL跳转,浏览器中的地址会改变为跳转后的地址

    在使用proxy_pass指令时要使用break标记。last标记在本条rewrite规则执行完后,继续在当前上下文对重写后的地址发起匹配请求,而break则在本次匹配完成后停止再次匹配。

    例如下面的两条重写规则。

    rewrite "^/bbs/(.*)/images/(.*).jpg$" www.linuxidc.com/bbs/$2/images/$1.jpg last;
    rewrite "^/bbs/(.*)/images/(.*).jpg$" www.linuxidc.com/bbs/$2/images/$1.jpg break;

    如果访问的是www.linuxidc.com/bbs/a/images/b.jpg则重写后为www.linuxidc.com/bbs/b/images/a.jpg,

    但是重写后的地址仍然可以匹配到规则^/bbs/(.*)/images/(.*).jpg$,此时如果使用last标记,则会再次进行重写,最终导致URL重写循环,nginx默认支持10次循环,然后返回500状态码。

    而如果使用break标记,则在重写完成后不会再次匹配重写。

    例子1. 在server字段中写rewrite,使得任意以linuxidc.com结尾的访问重定向到www.linuxidc.com。

    server_name  www.linuxidc.com;
    rewrite (.*).linuxidc.com www.linuxidc.com permanent;

    例子2. 在location字段中rewrite,使得localhost/bbs/*的访问都重定向到localhost/forum/*。

    server {
        listen 80;
        server_name localhost;
        location /bbs {
            root   html/;
            index index.html;
            rewrite "/bbs/(.*)" "/forum/$1" last;
        }
    }

    可以测试一下,比如nginx安装目录为:/usr/local/nginx,那么在/usr/local/nginx/html中新建2个文件夹,bbs和forum,并且分别在这两个文件夹中都建立文件1.txt,分别写入

    hello, bbs

    hello, forum

    然后访问http://localhost/bbs/1.txt, 可以看到返回hello, forum。 表示重写成功

    附加一个基于openrestry的https方案    https://www.cnblogs.com/shihuc/p/7150900.html



  • 相关阅读:
    调整vmware虚拟机硬盘空间的方法
    微型网络IP转换工具
    初观线程(1)
    Linux逻辑盘卷管理LVM详解(转载)
    微型IP转换工具V1.0升级版
    android 模拟器一键root
    android自用小软件"小毛毛起床啦!“<1>
    很久没更新博客了,写下最近的情况
    解决skype突然无法启动的问题(原创)
    OllyDBG处理C++ EH exception异常
  • 原文地址:https://www.cnblogs.com/regit/p/9323566.html
Copyright © 2011-2022 走看看