Nginx rewrite 规则 与 proxy_pass 实现
2016-05-31 18:24
543 查看
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;
}
------------------------------------------------------------------------------------------------------
~ 大小写敏感匹配
~* 大小写不敏感匹配
!~ 大小写敏感不匹配
!~* 大小写不敏感不匹配
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
-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;
}
相关文章推荐
- 利用 gperftools 对nginx mysql 内存管理 性能优化
- Nginx负载均衡策略
- nginx keepalived 主从切换
- nginx安装
- Linux(CentOS6.x)下使用yum软件管理工具安装LNMP(Nginx+PHP+Mysql)环境并配置虚拟主机vhost
- nginx 安装
- centos6.7上使用nginx实现负载均衡!
- centos6.7上使用nginx实现负载均衡!
- 用GDB调试NGINX
- nginx+keepalived负载均衡可用框架(补一 keepalived安装配置-热备-(服务器层和应用层))
- nginx rwrite及增加不记录特定状态日志nginx模块
- 两台服务器如何互相做nginx负载均衡
- windows下安装nginx
- nginx location 匹配规则
- Nginx RTMP 模块 nginx-rtmp-module 指令详解
- 解决nginx负载均衡的session共享问题
- PHP(FastCGI)在Nginx的alias下出现404错误的解决方法
- 切割nginx日志
- linux 查看nginx 安装路径
- 记录一次chown误操作导致服务宕机修复过程(linux+nginx+php+mysql)