nginx设置rewrite规则

合集下载

windows nginx rewrite 语法-概述说明以及解释

windows nginx rewrite 语法-概述说明以及解释

windows nginx rewrite 语法-概述说明以及解释1.引言1.1 概述概述在当今互联网时代,Web服务器扮演着至关重要的角色,而Nginx作为一款高性能的Web服务器和反向代理服务器,在实际应用中被广泛采用。

本文将围绕Windows环境下的Nginx Rewrite语法展开讨论。

Nginx Rewrite语法是一个非常重要的功能,通过它可以实现URL重写和重定向,从而帮助网站管理员更好地管理网站的URL结构和优化SEO。

在Windows环境下,如何正确地应用Nginx Rewrite语法,不仅涉及着网站的性能和用户体验,还关系着网站的搜索引擎排名和流量。

通过本文的深入解析,读者将能够全面了解Windows环境下Nginx Rewrite语法的基本概念和应用技巧,从而更好地优化自己的网站,并提升网站在搜索引擎中的排名。

1.2 文章结构文章结构部分将主要包括以下内容:1. 引言部分:- 概述: 对Windows环境下Nginx Rewrite语法进行简要介绍,引出文章主题。

- 文章结构: 说明本文的组织结构和内容安排,为读者提供阅读指引。

- 目的: 阐明本文的写作目的和意义,强调Windows环境下Nginx Rewrite语法的重要性。

2. 正文部分:- 什么是Windows环境下的Nginx: 介绍Nginx在Windows 环境下的基本概念和特点,为后续内容做铺垫。

- Rewrite语法的基本概念: 解释Rewrite语法的基本含义,讲解其在Nginx中的作用和用法。

- Windows环境下Nginx Rewrite语法的应用: 探讨在Windows 环境下如何使用Rewrite语法进行URL重写等操作,示例说明其实际应用场景。

3. 结论部分:- 总结Windows环境下Nginx Rewrite语法的重要性: 总结Rewrite语法在Windows环境下的作用和价值,强调其在网站优化和SEO 方面的重要性。

Nginx的Rewrite规则与实例

Nginx的Rewrite规则与实例

Nginx的Rewrite规则与实例通过Rewrite规则可以实现规范的URL、根据变量来做URL转向及选择配置,⽤好Rewrite有时起到事半功倍的效果。

语法Nginx的Rewrite相⽐Apache的要好理解很多,主要使⽤指令有if、rewrite、set、return、break等,其中rewrite是最关键的指令。

1. rewrite语法: rewrite regex replacement [flag];默认值: —上下⽂: server, location, if如果指定的正则表达式能匹配URI,此URI将被replacement参数定义的字符串改写。

rewrite指令按其在配置⽂件中出现的顺序执⾏。

flag可以终⽌后续指令的执⾏。

如果replacement的字符串以“http://”或“https://”开头,nginx将结束执⾏过程,并返回给客户端⼀个重定向。

可选的flag参数可以是其中之⼀:last停⽌执⾏当前这⼀轮的ngx_http_rewrite_module指令集,然后查找匹配改变后URI的新location;break停⽌执⾏当前这⼀轮的ngx_http_rewrite_module指令集;redirect在replacement字符串未以“http://”或“https://”开头时,使⽤返回状态码为302的临时重定向;permanent返回状态码为301的永久重定向。

举例server {...rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last;return 403;...}但是当上述指令写在“/download/”的location中时,应使⽤标志break代替last,否则nginx会重复10轮循环,然后返回错误500(break和last的区别请参考break):location /download/ {rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra break;return 403;}如果replacement字符串包括新的请求参数,以往的请求参数会添加到新参数后⾯。

nginx rewrite 可使用参数

nginx rewrite 可使用参数

nginx rewrite 可使用参数
在nginx rewrite规则中,以下是可用的一些参数:
1. $arg_PARAMETER:获取请求中的参数值。

2. $args:获取请求中的所有参数。

3. $binary_remote_addr:获取远程客户端的IP地址,以二进制形式表示。

4. $document_root:获取当前请求的根目录。

5. $host:获取当前请求的主机名。

6. $http_HEADER:获取请求头中指定的HEADER的值。

7. $request_filename:获取当前请求的文件名。

8. $request_method:获取当前请求的方法(GET、POST等)。

9. $remote_addr:获取远程客户端的IP地址。

10. $request_uri:获取当前请求的URI。

这些参数可以使用在rewrite规则中,来对请求路径进行修改或者重定向。

例如:
rewrite ^/oldpath/(.*)$ /newpath/$1 redirect;
上面的规则将匹配以/oldpath/开头的请求,并将其重定向到以/newpath/开头的路径。

其中,$1代表第一个括号内匹配到的子字符串,也就是/oldpath/后面的内容。

Nginx Rewrite指令文档

Nginx Rewrite指令文档
Nginx HttpRewriteModule 模块文档
฿ࠑ

ܸ˿ණ

break!
1
if!
2
return!
4
rewrite!
4
set!
5
uninitialized_variable_warn!
5
ߪԷ

在Nginx下配置WordPress!
6
防盗链的配置!
7
Apache Rewrite 和 Nginx rewrite!
ܸ˿ණ
break
语法:break 缺省:none 作用域:server,location,if 结束目前这一组规则的执行。不再执行更多的rewrite指令了。 例子: if ($slow) {
limit_rate 10k; break; }
作者:Charles • 微博:/charlestang • 主页:
• break - 完成rewrite指令的处理
• redirect - 返回临时的重定向码302;如果替换行以http://开头,会使用这个标志
• permanent - 返回永久重定向码301
注意,如果重定向是相对路径(没有主机名部分),那么当重定向的时候,Nginx会使用Host头信息,如果头信息匹配 server_name指令或者server_name指令的第一个名字的话。如果不匹配的话,则空着Host信息。如果没有设定 server_name的话,会使用本地主机名称。如果希望Nginx总是使用Host信息,可以使用一个星号*来指定server_name (这么做的时候,要注意其限制)。例子:
set $host_without_www $1; rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1 contains '/foo', not '/foo' } 标志位的允许值如下:

nginx中rewrite的用法 -回复

nginx中rewrite的用法 -回复

nginx中rewrite的用法-回复nginx中的rewrite指令用于修改URL,重定向请求和转发请求,并且它是一个非常强大和灵活的工具。

在这篇文章中,我们将详细讨论nginx中rewrite的用法,并一步一步回答关于这个主题的问题。

第一步:了解rewrite指令的语法和选项在nginx中,rewrite指令的语法如下:rewrite regex replacement [flag];其中,regex是一个正则表达式,用于匹配需要重写的URL。

replacement 是一个替换字符串,用于替换匹配到的URL。

flag是一个可选的修饰符,用于控制重写规则的行为。

常见的flag选项包括:- last:表示完成这条重写规则后,停止重写过程,将URL交给下一个location块进行处理。

- break:表示完成这条重写规则后,停止重写过程,立即重新启动URI 到当前所在的location块。

- redirect:表示返回302重定向响应,并将URL重定向到新的位置。

- permanent:表示返回301永久重定向响应,并将URL永久重定向到新的位置。

在rewrite指令中,regex和replacement之间的关系非常重要。

例如,通过以下规则将所有的/index.html页面重定向到/new/index.html页面:rewrite ^/index.html /new/index.html last;在这个例子中,^/index.html是一个正则表达式,匹配到了所有的/index.html页面。

将其替换为/new/index.html会将请求重定向到新的位置。

第二步:了解rewrite规则的匹配过程rewrite规则的匹配过程是按照location块的顺序进行的。

当nginx接收到一个请求时,它会按照配置文件中的location块顺序对请求的URI进行匹配,然后在匹配成功的location块内执行rewrite规则。

nginx rewrite 参数和例子+常用Rewrite伪静态法则

nginx rewrite 参数和例子+常用Rewrite伪静态法则

正则表达式匹配,其中:1. * ~ 为区分大小写匹配2. * ~* 为不区分大小写匹配3. * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配文件及目录匹配,其中:1. * -f和!-f用来判断是否存在文件2. * -d和!-d用来判断是否存在目录3. * -e和!-e用来判断是否存在文件或目录4. * -x和!-x用来判断文件是否可执行flag标记有:1. * last 相当于Apache里的[L]标记,表示完成rewrite2. * break 终止匹配, 不再匹配后面的规则3. * redirect 返回302临时重定向地址栏会显示跳转后的地址4. * permanent 返回301永久重定向地址栏会显示跳转后的地址一些可用的全局变量有,可以用做条件判断(待补全)1. $args2. $content_length3. $content_type4. $document_root5. $document_uri6. $host7. $http_user_agent8. $http_cookie9. $limit_rate10. $request_body_file11. $request_method12. $remote_addr13. $remote_port14. $remote_user15. $request_filename16. $request_uri17. $query_string18. $scheme19. $server_protocol20. $server_addr21. $server_name22. $server_port23. $uri结合QeePHP的例子1. if (!-d $request_filename) {2. rewrite^/([a-z-A-Z]+)/([a-z-A-Z]+)/?(.*)$ /index.php?namespace=user&controller=$1 &action=$2&$3 last;3. rewrite ^/([a-z-A-Z]+)/?$ /index.php?namespace=user&controller=$1 last;4. break;多目录转成参数/sort/2 => /index.php?act=sort&name=abc&id=21. if ($host ~* (.*)/.domain/.com) {2. set $sub_name $1;3. rewrite ^/sort//(/d+)//?$ /index.php?act=sort&cid=$sub_name&id=$1 last;4. }目录对换/123456/xxxx -> /xxxx?id=1234561. rewrite ^/(/d+)/(.+)/ /$2?id=$1 last;例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:1. if ($http_user_agent ~ MSIE) {2. rewrite ^(.*)$ /nginx-ie/$1 break;3. }目录自动加“/”1. if (-d $request_filename){2. rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;3. }禁止htaccess1. location ~//.ht {2. deny all;3. }禁止多个目录1. location ~ ^/(cron|templates)/ {2. deny all;3. break;4. }禁止以/data开头的文件可以禁止/data/下多级目录下.log.txt等请求;1. location ~ ^/data {2. deny all;3. }禁止单个目录不能禁止.log.txt能请求1. location /searchword/cron/ {2. deny all;3. }禁止单个文件1. location ~ /data/sql/data.sql {2. deny all;3. }给favicon.ico和robots.txt设置过期时间;这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志1. location ~(favicon.ico) {2. log_not_found off;3. expires 99d;4. break;5. }6.7. location ~(robots.txt) {8. log_not_found off;9. expires 7d;10. break;11. }设定某个文件的过期时间;这里为600秒,并不记录访问日志1. location ^~ /html/scripts/loadhead_1.js {2. access_log off;3. root /opt/lampp/htdocs/web;4. expires 600;5. break;6. }文件反盗链并设置过期时间这里的return 412 为自定义的http状态码,默认为403,方便找出正确的盗链的请求“rewrite ^/ /leech.gif;”显示一张防盗链图片“access_log off;”不记录访问日志,减轻压力“expires 3d”所有文件3天的浏览器缓存1. location ~* ^.+/.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {2. valid_referers none blocked * * localhost208.97.167.194;3. if ($invalid_referer) {4. rewrite ^/ /leech.gif;5. return 412;6. break;7. }8. access_log off;9. root /opt/lampp/htdocs/web;10. expires 3d;11. break;12. }只充许固定ip访问网站,并加上密码1. root /opt/htdocs/www;2. allow 208.97.167.194;3. allow 222.33.1.2;4. allow 231.152.49.4;5. deny all;6. auth_basic "C1G_ADMIN";7. auth_basic_user_file htpasswd;将多级目录下的文件转成一个文件,增强seo效果/job-123-456-789.html 指向/job/123/456/789.html1. rewrite ^/job-([0-9]+)-([0-9]+)-([0-9]+)/.html$ /job/$1/$2/jobshow_$3.html last;将根目录下某个文件夹指向2级目录如/shanghaijob/ 指向/area/shanghai/如果你将last改成permanent,那么浏览器地址栏显是/location/shanghai/1. rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;上面例子有个问题是访问/shanghai 时将不会匹配1. rewrite ^/([0-9a-z]+)job$ /area/$1/ last;2. rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;这样/shanghai 也可以访问了,但页面中的相对链接无法使用,如./list_1.html真实地址是/area/shanghia/list_1.html会变成/list_1.html,导至无法访问。

nginx中rewrite方法

nginx中rewrite方法

nginx中rewrite方法一、引言在Web服务器和反向代理服务器中,Nginx拥有高性能和丰富的功能,成为了许多开发者和运维人员的首选。

本文将详细介绍Nginx中的rewrite方法,帮助大家更好地掌握这一强大的技术。

二、Nginx简介ginx是一款高性能的HTTP服务器,由俄罗斯程序员Igor Sysoev开发。

它具有高性能、稳定性、可扩展性等特点,支持多种编程语言编写,广泛应用于Web服务器和反向代理服务器等领域。

三、Nginx中的rewrite方法1.rewrite指令在Nginx配置文件中,可以使用rewrite指令来实现URL重写。

rewrite 指令的基本语法如下:```rewrite URL_pattern target_url;```其中,URL_pattern表示待重写的原始URL,target_url表示重写后的目标URL。

2.rewrite规则ginx支持两种rewrite规则:正则表达式和普通表达式。

正则表达式:使用`~`符号表示匹配,如:`~^/old_url/(.*)$ `普通表达式:使用`^`、`$`、`(.*)`等符号表示匹配,如:`^/old_url/(.*)$ `3.常用rewrite场景(1)重写URL:将长URL转换为短URL,提高网站美观度和用户体验。

(2)实现301重定向:当网站更换域名或目录时,使用301重定向将用户引导至新地址,提高搜索引擎友好度。

(3)限制请求频率:通过rewrite指令实现访问频率限制,防止恶意攻击和刷屏。

四、实战案例1.重写URL以下配置将长URL重写为短URL:```location /old_url/ {rewrite /old_url/(.*) /new_url/$1;}```2.实现301重定向以下配置实现网站目录跳转:```server {server_name old_;root /var/www/old_domain;rewrite ^/old_directory/(.*) http://new_/$1;redirect 301 /old_directory/ http://new_/;}```3.限制请求频率以下配置限制每分钟最多请求50次:```limit_req_zone $binary_remote_addr zone=mylimit:10mrate=50r/min;location / {if ($binary_remote_addr ~* "mylimit") {return 429 T oo Many Requests;}proxy_pass http://backend;}```五、总结与拓展本文详细介绍了Nginx中的rewrite方法,包括rewrite指令、rewrite规则和常用实战案例。

nginx配置location总结及rewrite规则写法

nginx配置location总结及rewrite规则写法

nginx配置location总结及rewrite规则写法随着互联网技术的不断发展,nginx作为一款高性能的Web服务器软件,越来越受到广大站点的青睐。

本文将介绍nginx配置中的location和rewrite规则的用法,帮助读者更好地理解和掌握nginx的配置技巧。

一、nginx配置概述nginx是一款轻量级、高性能的Web服务器软件,广泛应用于互联网、企业等场景。

其配置文件主要包含http、server、location、proxy_pass、limit_except等部分,用于描述不同的请求处理逻辑。

其中,location部分用于匹配不同类型和位置的请求,提供了一种灵活的请求匹配机制。

二、location总结在nginx配置中,location用于匹配不同类型的请求,并执行相应的处理逻辑。

常见的location类型包括:1.root:匹配根目录请求,用于指定静态文件的目录路径。

2.alias:匹配别名请求,用于指定虚拟主机的路径映射。

3.proxy_pass:匹配代理请求,用于将请求转发到后端服务器。

4.if_modified_since:匹配修改时间后的请求,用于缓存静态资源。

st:匹配最后一个请求,用于结束当前server块的处理。

location的匹配顺序也需要注意,根据匹配优先级的不同,可以设置不同的权重值。

同时,location还支持正则表达式匹配,提供了一种更加灵活的请求匹配方式。

三、rewrite规则写法rewrite规则是一种常用的请求重定向机制,用于将请求重定向到不同的路径或执行一些特殊的处理逻辑。

其语法格式为:rewrite[flags][target][flags]。

其中,target可以是绝对路径或相对路径,flags可以是一些可选的标志位。

常见的rewrite规则用法包括:1.重定向到不同的路径:rewrite^/old/path$/new/path;将所有匹配/old/path的请求重定向到/new/path。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Nginx 设置rewrite规则
Windows下环境为wamp ,在wamp 环境下,设置rewite规则时,很是简单,只需要打开Apache配置中的rewrite规则,项目中使用rewrite规则时只需创建.htaccess文件,在文件中编写规则,Apache会自动进行解析,但是在linux下则有些不一样。

Linux下环境若是lamp,则和wamp下是相同的,但当环境为lnmp时,需要注意进行如下配置方法:
根据所安装的环境情况,如果环境是lnmp集成环境,在配置rewrite规则时,因为集成环境,在安装完毕后,在安装的目录/usr/local/nginx/conf下,会生成一个文件“wordparss”,这个文件中是专门用于写rewrite规则所用,你可以在这个文件中书写rewrite规则,nginx 的rewrite规则与Apache的规则基本是相同的,只是在文件中书写的方法不同,wordpaess 问件中默认是有一个规则的,如:
利用location加载访问路径,“/”,指代由访问路径的根目录开始,
用if对加载的路径$request_filename 进行验证:
1 、-f 和!-f 用来判断文件是否存在
2、-d 和!-d 用来判断目录是否存在
3 、-e 和!-e 用来判断文件或目录是否存在
4、-x 和!-x 用来判断文件是否可执行
Flag标记:
1、last 相当于Apache里的[L]标记,表示完成rewrite
2、break 终止匹配, 不再匹配后面的规则
3、redirect 返回302临时重定向地址栏会显示跳转后的地址
4、permanent 返回301永久重定向地址栏会显示跳转后的地址
因为在lnmp集成环境下要配置虚拟域名是可以进行自动生成的,生成后会在/usr/local/nginx/conf/vhost 下生成一个以虚拟域名的名字的文件,如:lin_hp.its.conf,而所对应的rewrite规则最好在与域名相对应的配置文件中进行配置,这样不会说,如果有多个域名时,他们所对应的rewrite规则不同,在公共的wordpress文件中配置引起冲突,所配置的方法与在wprdpress文件中是相同的,如:
像这样在中间加上
rewrite规则就可以
可以根据具体的访问路径进行规则定义,我所用的框架为thinkphp,想要引用这样的路经:http://lin_/Product/index/pid/35,就定义规则为rewrite ^(.*)$ /index.php/$1;就可以了,若要引用:http://lin_/index.php?s=/show的路径就定义规则为:rewrite ^(.*)$ /index.php?s=$1;这样就可以了。

如果lnmp环境不是集成性的,那么所书写的rewrite规则应该写在nginx.conf文件中,书写的方法lnmp集成环境是相同的,在配置文件中的每一个自定义的虚拟域名的server中进行写入。

相关文档
最新文档