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
nginx之重写的更多相关文章
- 很不错的NGINX URL重写实例
转自:http://www.jbxue.com/article/2187.html 本文介绍nginx URL重写的相关知识,包括301重定向的内容等,希望对大家有所帮助. nginx rewrite ...
- nginx url 重写 [转]
本文转自 http://www.jbxue.com/article/2187.html 本文介绍nginx URL重写的相关知识,包括301重定向的内容等,希望对大家有所帮助. nginx rewri ...
- Nginx URL重写(rewrite)配置及信息详解
URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中 Nginx URL重写(rewrite)介绍 和apache等web服务软件一样,rewrite的组要功 ...
- web服务器-Nginx URL重写
web服务器-Nginx URL重写 一. URL重写介绍 和apache等web服务软件一样,rewrite的主要功能是实现URL地址的重定向.Nginx的rewrite功能需要PCRE软件的支持, ...
- nginx url重写 rewrite实例
本文介绍下,在nginx中实现Url重写,学习rewrite的具体用法,有需要的朋友参考下吧. 原文地址:http://www.360doc.com/content/14/0202/20/142341 ...
- nginx URL重写
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- nginx rewrite重写
通过官方文档可以看到,rewrite的作用上下文是 server location,可以写在 server里面 亦或location里面; 命令: if (条件) {} 条件判断 set #设置 ...
- 16、Nginx Rewrite重写
1.Rewrite基本概述 1.1.什么是rewrite Rewrite主要实现url地址重写, 以及地址重定向,就是将用户请求web服务器的地址重新定向到其他URL的过程. 1.2.Rewrite使 ...
- nginx rewrite重写与防盗链配置
nginx rewrite重写规则与防盗链配置方法 时间:2016-02-04 15:16:58来源:网络 导读:nginx rewrite重写规则与防盗链配置方法,rewrite规则格式中flag标 ...
随机推荐
- 第七章 二叉搜索树 (a)概述
- Cocoa Touch(五):网络请求 NSURLSession/AFNetworking, GCD, NSURLResquest
NSURLRequest 网络请求的关键的就是NSURLRequest类,它的实例表示了请求报文实体以及请求的缓存策略等等,各种网络框架的最终目标都是把这个对象编译成为请求报文发送出去.下面用一个实例 ...
- git 本地忽略某些个文件
git update-index --assume-unchanged <要忽略的文件> git update-index --no-assume-unchanged <要取消忽略的 ...
- 微信小程序通讯录首字母索引效果,车辆品牌选择列表
效果图: wxml代码: <block wx:for="{{list}}"> <view class='letter' id="letter{{inde ...
- 简述json模块
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,他的数据结构与Python中的字典一样,键值对来表示数据间的关系,可以包含列表. 在编写 ...
- 使用delphi 开发多层应用(二十一)使用XE5 RESTClient 直接访问kbmmw 数据库
delphi XE5 出来了,增加了android 的开发支持,另外增加了一个RESTClient 来支持访问REST 服务器. 这个功能非常强大,可以直接使用非常多的REST 服务器.同时也可以支持 ...
- Andriod 之数据获取
服务端Model using System; using System.Collections.Generic; using System.Linq; using System.Web; namesp ...
- 跟微软保持适当距离--Hessian + .net 实现RPC体系的企业应用
同在一个产业链园区的XX厂因为5台Window2003服务器收到了律师函并且被迫下了12万$的采购单,虽然100万对XXX厂来数不是大数目,但是总有种被打劫的感觉. 在企业ERP应用中服务层一般都是做 ...
- 【转载】【JAVA秒会技术之图片上传】基于Nginx及FastDFS,完成图片的上传及展示
基于Nginx及FastDFS,完成商品图片的上传及展示 一.传统图片存储及展示方式 存在问题: 1)大并发量上传访问图片时,需要对web应用做负载均衡,但是会存在图片共享问题 2)web应用服务器的 ...
- B-spline Curves 学习之B样条曲线的导数(8)
Derivatives of a B-spline Curve 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关的翻译学习. (原来博客 ...