[转帖]Nginx rewrite 规则 与 proxy_pass 实现

https://www.cnblogs.com/jicki/p/5546916.html

Nginx rewrite 规则  与 proxy_pass 实现

------------------------------------------------------------------------------------------------------

~         大小写敏感匹配

~*        大小写不敏感匹配

!~        大小写敏感不匹配

!~*       大小写不敏感不匹配

------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------

-f        检测文件存在

-d        检测目录存在

-e        检测文件,目录或者符号链接存在

-x        检测文件可执行

------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------

break     –  停止rewrite检测,也就是说当含有break flag的rewrite语句被执行时,该语句就是rewrite的最终结果。

last      –  停止rewrite检测,但是跟break有本质的不同,last的语句不一定是最终结果。

redirect  –  返回302临时重定向,一般用于重定向到完整的URL(包含http:部分)

permanent –  返回301永久重定向,一般用于重定向到完整的URL(包含http:部分)

------------------------------------------------------------------------------------------------------

一些实际例子

if($http_host = www.qq.com)

{

rewrite (.*) http://www.baidu.com$1 permanent;

}

// 如果请求的url是 www.qq.com  则永久重定向到 www.baidu.com

rewrite ^/([0-9]+).html$ /user/id=$1 last;

// 如果 www.qq.com/user/id=123456   则显示为 www.qq.com/123456.html

location ^~ /qq/

{

proxy_pass http://www.qq.com/;

}

//如果请求目录为 /qq/  则代理到 www.qq.com     如果www.qq.com/qq/  则代理到 www.qq.com

location ~ ^/data

{

deny all;

}

// 禁止 data 目录下所有文件的请求

if (!-f $request_filename)

{

break;

proxy_pass  http://www.qq.com;

}

// 如果请求的文件名不存在 则代理到 www.qq.com

if (-d $request_filename)

{

rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;

}

// 如果请求的目录存在  则自动增加 / 符号

禁止访问 /svn/ git  cvs 这几个目录...防止 svn 文件下载··源码泄漏

location ~ .*\.(svn|git|cvs)

{

deny all;

}

原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/11684986.html

时间: 2024-11-05 19:45:01

[转帖]Nginx rewrite 规则 与 proxy_pass 实现的相关文章

nginx rewrite规则语法

在新主机的迁移过程中,最大的困难就是WP permalink rewrite的设置. 因为旧主机是用的Apache, 使用的是WP本身就可以更改的.htaccess,没有太大的难度.而这次在VPS上跑的是Nginx,主要是因为Nginx的速度比Apache要快很多. 但是另一方面就不是那么舒服了,因为Nginx的rewrite跟Apache不同,而且是在服务器上面才能更改. 下面是其间的一些研究笔记.(以下用例如无特别说明均摘自nginx wiki) /1 Nginx rewrite基本语法 N

Nginx Rewrite规则记录

Rewrite 是一种服务器的重写脉冲技术,它可以使得服务器可以支持 URL 重写,是一种最新流行的服务器技术.它还可以实现限制特定IP访问网站的功能.很多情况下,某个 IP 的访问很容易造成 CPU 100% (比如 某些搜索引擎的固定抓取,别人大量的采集站点),这个时候我们就要利用一些有效的手段封掉对方的 IP,让他无法消耗服务器的资源,封 IP 的方法有很多种,如果你的 Web(Nginx|Apache|other) 服务器安装了 Rewrite 模块的话,也可以试试利用 Rewrite

Nginx Rewrite规则详解

Rewrite规则含义就是某个URL重写成特定的URL,从某种意义上说为了美观或者对搜索引擎友好,提高收录量及排名等. Rewrite规则的最后一项参数为flag标记,支持的flag标记主要有以下几种: 1)    last :相当于Apache里的(L)标记,表示完成rewrite: 2)    break:本条规则匹配完成后,终止匹配,不再匹配后面的规则  3)    redirect:返回302临时重定向,浏览器地址会显示跳转后的URL地址  4)    permanent:返回301永久

Nginx Rewrite规则

location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 # 但是正则和最长字符串会优先匹配 [ configuration B ] } location /documents/ { # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索 # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条 [ configu

Nginx Rewrite规则初探(转)

Nginx  rewrite(nginx url地址重写)Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Nginx之前,需要编译安装PCRE库. 通过Rewrite规则,可以实现规范的URL.根据变量来做URL转向及选择配置. if        指令规则语法: [plain] view plain copy if ($http_user_agent ~MSIE){

codeigniter nginx rewrite规则配置【转】

转自:http://www.nginx.cn/1134.html nginx如何配置才能支持codeigniter ? 1. codeigniter的url美化去掉index.php 1 2 3 4 5 location / { root   html/gxtp; index  index.php; try_files $uri $uri/ /index.php?$uri&$args; } 2.与thinkphp一样codeigniter的url rewrite也是使用pathinfo来实现的,

Nginx Rewrite 规则入门 伪静态规则

文件及目录匹配: -f 和 !-f 用来判断是否存在文件 -d 和 !-d 用来判断是否存在目录 -e 和 !-e 用来判断是否存在文件或目录 -x 和 !-x 用来判断文件是否可执行 正则表达式匹配: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 flag标记有: last 相当于Apache里的[L]标记,表示完成 rewrite break 终止匹配, 不再匹配后面的规则 redirect 返回302临时重定向 地址栏会

nginx rewrite 规则

rewrite功能:使用nginx提供的全局变量或自设定的变量,结合正则表达式和标志位实现url重写以及重定向. 配置域:server,localtion. flag标志位     last : 相当于Apache的[L]标记,表示完成rewrite     break : 停止执行当前虚拟主机的后续rewrite指令集     redirect : 返回302临时重定向,地址栏会显示跳转后的地址     permanent : 返回301永久重定向,地址栏会显示跳转后的地址 rewrite通常

Nginx高级应用--负载均衡、rewrite规则

Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案.nginx可以用轮询.IP哈希.URL哈希等方式调度后端服务器,同时也能提供健康检查功能.目前有众多公司均已经部署使用nginx实现基于七层的负载均衡功能. 一. Nginx负载均衡 为了实现Nginx的反向代理以及负载均衡功能,应用中需要用到两个模块,HttpProxyModule和HttpUpstreamModule模块:其中HttpProxyModule模块的作用是将用户的数据请