在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指令不支持嵌套,不支持多个条件&&和||处理。
本回答由网友推荐
请教问题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反向代理配置。
本回答由提问者推荐