在linux服务器nginx环境下rewrite规则怎么写

一.正则表达式匹配,其中:

*~为区分大小写匹配

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

*!~和!~*分别为区分大小写不匹配及不区分大小写不匹配

二.文件及目录匹配,其中:

*-f和!-f用来判断是否存在文件

*-d和!-d用来判断是否存在目录

*-e和!-e用来判断是否存在文件或目录

*-x和!-x用来判断文件是否可执行

三.rewrite指令的最后一项参数为flag标记,flag标记有:

1.last相当于apache里面的[L]标记,表示rewrite。

2.break本条规则匹配完成后,终止匹配,不再匹配后面的规则。

3.redirect返回302临时重定向,浏览器地址会显示跳转后的URL地址。

4.permanent返回301永久重定向,浏览器地址会显示跳转后的URL地址。

使用last和break实现URI重写,浏览器地址栏不变。而且两者有细微差别,使用alias指令必须用last标记;使用proxy_pass指令时,需要使用break标记。Last标记在本条rewrite规则执行完毕后,会对其所在server{......}标签重新发起请求,而break标记则在本条规则匹配完成后,终止匹配。

例如:如果我们将类似URL/photo/123456重定向到/path/to/photo/12/1234/123456.png

rewrite"/photo/([0-9]{2})([0-9]{2})([0-9]{2})"/path/to/photo/$1/$1$2/$1$2$3.png;

四.NginxRewrite规则相关指令

1.break指令

使用环境:server,location,if;

该指令的作用是完成当前的规则集,不再处理rewrite指令。

2.if指令

使用环境:server,location

该指令用于检查一个条件是否符合,如果条件符合,则执行大括号内的语句。If指令不支持嵌套,不支持多个条件&&和||处理。

本回答由网友推荐

pass_nginxrewriteproxy

请教问题nginx反向代理proxy

Nginx作为web服务器一个重要的功能就是反向代理。其实我们在前面的一篇文章《Nginx多站点配置的一次实践》里,用的就是Nginx的反向代理,这里简单再提一下。

下面是配置Nginx作为tornado的反向代理的设置:

upstreamtornado{

server127.0.0.1:8888;

server{

listen80;

root/root/nmapp2_venv;

indexindex.pyindex.html;

server_nameserver;

location/{

#if(!-e$request_filename){

#rewrite^/(.*)$/index.py/$1last;

location~/index\.py{

proxy_pass_headerServer;

proxy_set_headerHost$http_host;

proxy_set_headerX-Real-IP$remote_addr;

proxy_set_headerX-Scheme$scheme;

proxy_pass

Nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理。

再举一个例子吧。比如要配置后端跑apache服务的ip和端口,也就是说,我们的目标是实现通过

:port

能访问到你的网站。

只要新建一个vhost.conf,加入如下内容(记得修改ip和域名为你的ip和域名)。修改nginx.conf,添加includequancha.conf到http{}段,reloadnginx就可以了。

Nginx反向代理模板:

##Basicreverseproxyserver##

upstreamapachephp{

serverip:8080;#Apache

##Start

www.nowamagic.net

server{

listen80;

server_name

www.nowamagic.net

access_loglogs/quancha.access.logmain;

error_loglogs/quancha.error.log;

roothtml;

indexindex.htmlindex.htmindex.php;

##sendrequestbacktoapache##

location/{

proxy_pass

#ProxySettings

proxy_redirectoff;

proxy_set_headerHost$host;

proxy_set_headerX-Real-IP$remote_addr;

proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;

proxy_next_upstreamerrortimeoutinvalid_headerhttp_500http_502http_503http_504;

proxy_max_temp_file_size0;

proxy_connect_timeout90;

proxy_send_timeout90;

proxy_read_timeout90;

proxy_buffer_size4k;

proxy_buffers432k;

proxy_busy_buffers_size64k;

proxy_temp_file_write_size64k;

这就完成了Nginx反向代理配置。

本回答由提问者推荐