nginx rewrite重写规则与防盗链配置方法教程详解

 更新时间:2016年09月08日 10:05:12   作者:un123  
这篇文章主要介绍了nginx rewrite重写规则与防盗链配置方法教程详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下

导读:nginx rewrite重写规则与防盗链配置方法,rewrite规则格式中flag标记的几种形式,盗链时返回403错误,允许的域名直接跟在第二行的域名后面。

nginx rewrite重写规则与防盗链配置方法如下所示:

nginx rewite 规则,官方文档:http://wiki.nginx.org/NginxHttpRewriteModule

nginx rewrite规则格式:rewrite regex replacement flag

flag标记有四种格式:

last – 相当于Apache中的L
break – 中止Rewirte,不在继续匹配
redirect – 返回临时重定向的HTTP状态302,相当于Apache中的R
permanent – 返回永久重定向的HTTP状态301,相当于Apache中的R=301

可以放在server, location 和 if 模块中。

匹配判断:

~ 为区分大小写匹配; !~为区分大小写不匹配
~* 为不区分大小写匹配;!~为不区分大小写不匹配

例如,设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:

if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /msie/$1 break;
}

附,常用nginx Rewrite 规则配置代码。

1、只使用一个网址,比如主力网址设为www.xfcodes.com

if ($host != 'www.xfcodes.com' ) {
rewrite ^/(.*)$ http://www.xfcodes.com/$1 permanent;
}

访问xfcodes.com时,会自动跳转到www.xfcodes.com

2、防盗链

location ~* .(gif|jpg|png|swf|flv)$ {
valid_referers none blocked xfcodes.com dgjs123.com;
if ($invalid_referer) {
return 403;
}
}

盗链时则返回403错误,允许的域名可以直接跟在第二行的域名后面。

3、WordPress的Rewrite

location / {
index index.html index.php;
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}

目前,代码收藏上就是使用的这段代码。

4.bo-blog在nginx下nginx rewrite 规则

if (!-e $request_filename) {
rewrite ^/post/([0-9]+)/?([0-9]+)?/?([0-9]+)?/?$ /read.php?entryid=$1&page=$2&part=$3 last;
rewrite ^/page/([0-9]+)/([0-9]+)/?$ /index.php?mode=$1&page=$2 last;
rewrite ^/starred/([0-9]+)/?([0-9]+)?/?$ /star.php?mode=$1&page=$2 last;
rewrite ^/category/([^/]+)/?([0-9]+)?/?([0-9]+)?/?$ /index.php?go=category_$1&mode=$2&page=$3 last;
rewrite ^/archiver/([0-9]+)/([0-9]+)/?([0-9]+)?/?([0-9]+)?/?$ /index.php?go=archive&cm=$1&cy=$2&mode=$3&page=$4 last;
rewrite ^/date/([0-9]+)/([0-9]+)/([0-9]+)/?([0-9]+)?/?([0-9]+)?/?$ /index.php?go=showday_$1-$2-$3&mode=$4&page=$5 last;
rewrite ^/user/([0-9]+)/?$ /view.php?go=user_$1 last;
rewrite ^/tags/([^/]+)/?([0-9]+)?/?([0-9]+)?/?$ /tag.php?tag=$1&mode=$2&page=$3 last;
rewrite ^/component/id/([0-9]+)/?$ /page.php?pageid=$1 last;
rewrite ^/component/([^/]+)/?$ /page.php?pagealias=$1 last;
#Force redirection for old rules
rewrite ^/read\.php/([0-9]+)\.htm$ http://$host/post/$1/ permanent;
rewrite ^/post/([0-9]+)\.htm$ http://$host/post/$1/ permanent;
rewrite ^/post/([0-9]+)\_([0-9]+)\.htm$ http://$host/post/$1/$2/ permanent;
rewrite ^/post/([0-9]+)\_([0-9]+)\_([0-9]+)\.htm$ http://$host/post/$1/$2/$3/ permanent;
rewrite ^/index\_([0-9]+)\_([0-9]+)\.htm$ http://$host/page/$1/$2/ permanent;
rewrite ^/star\_([0-9]+)\_([0-9]+)\.htm$ http://$host/starred/$1/$2/ permanent;
rewrite ^/category\_([0-9]+)\.htm$ http://$host/category/$1/ permanent;
rewrite ^/category\_([0-9]+)\_([0-9]+)\_([0-9]+)\.htm$ http://$host/category/$1/$2/$3/ permanent;
rewrite ^/archive\_([0-9]+)\_([0-9]+)\.htm$ http://$host/archiver/$1/$2/ permanent;
rewrite ^/archive\_([0-9]+)\_([0-9]+)\_([0-9]+)\_([0-9]+)\.htm$ http://$host/archiver/$1/$2/$3/$4/ permanent;
rewrite ^/showday\_([0-9]+)\_([0-9]+)\_([0-9]+)\.htm$ http://$host/date/$1/$2/$3/ permanent;
rewrite ^/showday\_([0-9]+)\_([0-9]+)\_([0-9]+)\_([0-9]+)\_([0-9]+)\.htm$ http://$host/date/$1/$2/$3/$4/$5/ permanent;
#Filename alias
rewrite ^/([a-zA-Z0-9_-]+)/?([0-9]+)?/?([0-9]+)?/?$ /read.php?blogalias=$1&page=$2&part=$3 last;
}

以上所述是小编给大家介绍的nginx rewrite重写规则与防盗链配置方法教程详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Nginx解决转发地址时跨域的问题

    Nginx解决转发地址时跨域的问题

    这篇文章主要介绍了Nginx实现转发地址解决跨域问题的方法,文中介绍的很详细,对大家的学习具有一定的参考借鉴价值,有需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • Python的Bottle框架基本知识总结

    Python的Bottle框架基本知识总结

    这篇文章主要介绍了Python的Bottle框架基本知识总结,本文翻译自Bottle官方开发文档,需要的朋友可以参考下
    2015-05-05
  • 解决nginx启动失败(bind() to 0.0.0.0:80 failed,An attempt was made to access a socket in...)

    解决nginx启动失败(bind() to 0.0.0.0:80 failed,An attempt was 

    这篇文章主要介绍了解决nginx启动失败问题(bind() to 0.0.0.0:80 failed,An attempt was made to access a socket in ...),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • 深入理解Nginx的proxy_cache模块

    深入理解Nginx的proxy_cache模块

    Nginx的proxy_cache模块提供了强大而灵活的缓存功能,本文主要介绍了深入理解Nginx的proxy_cache模块,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • Nginx服务器如何设置url链接

    Nginx服务器如何设置url链接

    这篇文章主要介绍了Nginx服务器如何设置url链接,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 使用nginx进行负载均衡的搭建全过程

    使用nginx进行负载均衡的搭建全过程

    负载均衡用于从“upstream”模块定义的后端服务器列表中选取一台服务器接受用户的请求,下面这篇文章主要给大家介绍了关于使用nginx进行负载均衡的搭建全过程,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Nginx端口被占用的解决方案(systemctl restart nginx失败)

    Nginx端口被占用的解决方案(systemctl restart nginx失败)

    ginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,它也是一种轻量级的Web服务器,可以作为独立的服务器部署网站(类似Tomcat),本文给大家介绍了NGINX启动报错,端口被占用解决方案,需要的朋友可以参考下
    2024-10-10
  • Nginx服务器中配置404错误页面时一些值得注意的地方

    Nginx服务器中配置404错误页面时一些值得注意的地方

    这篇文章主要介绍了Nginx服务器中配置404错误页面时一些值得注意的地方,包括隐藏Nginx出错页面及Header上的版本号的安全方法,需要的朋友可以参考下
    2016-01-01
  • windows下nginx的安装使用及解决80端口被占用nginx不能启动的问题

    windows下nginx的安装使用及解决80端口被占用nginx不能启动的问题

    这篇文章主要给大家介绍了关于windows下nginx的安装使用,以及如何解决80端口被占用导致nginx不能启动的问题,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-04-04
  • 阿里云ssl证书如何通过Nginx部署到服务器

    阿里云ssl证书如何通过Nginx部署到服务器

    这篇文章主要介绍了阿里云ssl证书通过Nginx部署到服务器的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论