nginx动静分离后个别静态文件代理至后端

网站通过nginx进行动静分离,但是个别静态文件开发在tomcat端配置的虚拟路径,此路径对nginx来说是不存在的,需要将这部分路径过滤并反向代理至后端处理。

1      环境介绍

1.   centos 6.5

2.   nginx 1.8

3.   tomcat 1.6

2      配置介绍

1.   nginx动静分离配置

            location ~.*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
                   {
                            root/code/qhfaxweb_re;        
                            expires      1d;
                   }

2.   nginx反向代理配置

         upstreamweb_cluster {
                                      server 192.168.1.62:6805 weight=1 max_fails=2fail_timeout=30s;
                                      server 192.168.1.63:6806 weight=2 max_fails=2fail_timeout=30s;
                               }

3.   需要方向代理至后端的静态路径

/path/down.myapp.com/Android.apk

3      解决方法

1.   通过URL rewrite至另一server,直接反向代理后端

a)URL rewrite设置

rewrite  ^/path/(.*) http://path.web.com/path/$1 last;

b)       server配置
         server{
                   listen       80;
                   server_name  path.web.com;
                   location/ {
                   proxy_pass  http://web_cluster;
                            }
                   }

2.   通过nginx的if模块在location内过滤

Nginx会按照配置文件出现的顺序来执行所有的rewrite阶段的指令,所以在location内设置if语句时,需要进行增加break指令,使其跳出location模块。

                             if ($uri ~ "/path/.*" ) {
                                     proxy_pass  http://web_ cluster;
                                     break;
                                     }

3.   使用匹配路径的方式

               location ^~/path/ {
                 proxy_passhttp://image.qhfax.com:8800;
                 break;
         }
            location ~.*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
                   {
                            root/code/qhfaxweb_re;        
                            expires      1d;
                   }

4      总结

各位运维小伙伴,一定要注意nginx在执行rewrite是顺序执行的,在出现if选择时,if模块和之后执行的步骤有冲突就需要使用break跳出,不再匹配之后的rewrite了,大家平时配置nginx时,值得留意此坑!!!

分享:如何使用nginx对动态请求中参数进行跳转
问题:有时候们在做rewrite,发现新的URL中获取参数的方法不一样了,如果在rewrite中直接去该参数为变量,那么你会发   现,规则是不成功的,nginx过滤了参数,这个使用就要使用nginx提供的$arg功能模块了,具体操作如下:
 
             if ( $arg_function ~‘GetNewDetail‘)
                                  {
                              rewrite  ^/cgi/news/NewAndNotice?(.*) /about/getArticleDetail/news/$arg_newIdlast;                          
                              break;
                                 }
上面$arg_function中的function为URL中的参数名,类似于/promotion/recommend.jsp?campaign_id=94926c22-9df4-11e3-82d5-b8ca3aecba9a&c_channel=tyq&c_keywords=01
中campaign_id或c_channel或keywords,直接抓取参数不同的进行匹配,然后再rewrite

标签:

nginx  if  location 配置不成功

nginx  如何 过滤  URL 路径

时间: 2024-10-09 19:07:31

nginx动静分离后个别静态文件代理至后端的相关文章

Apache与Nginx动静分离

概述 Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术.动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项 针对PHP的动静分离:静态页面交给Nginx处理,动态页面交给PHP-FPM模块或Apache处理. 在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式 实现动静分离的方式有三种: 静态web服务放置在公网中 静态web服务放置在代理服务器中 静态web服务放置在

Nginx动静分离知识及配置

Nginx动静分离知识及配置,本质上与分离上传下载功能是相同功能,本质就是在文件服务器也是需要部署WEB应用的,只是在进行代理分离的时候分配到对应的文件服务器上去. 随着Nginx高性能Web服务器大量被使用,目前Nginx最新稳定版为1.2.6,张宴兄在实际应用中大量使用Nginx,并分享Nginx高性能Web服务器知识,使得Nginx在国内也是飞速的发展.那今天咱们再来温习一下Nginx 动静分离知识,这里仅供参考. 一.实践环境: 系统版本:CentOS6.0 X86_64 Nginx版本

nginx 动静分离

随着Nginx高性能Web服务器大量被使用,目前Nginx最新稳定版为1.2.6,张宴兄在实际应用中大量使用Nginx,并分享Nginx高性能Web服务器知识,使得Nginx在国内也是飞速的发展.那今天咱们再来温习一下Nginx 动静分离知识,这里仅供参考. 一.实践环境: 系统版本:CentOS6.0 X86_64 Nginx版本:Nginx-1.2.6 Tomcat版本:Tomcat-6.0.18 二.Nginx安装: 实际环境中安装Nginx,首先需要安装pcre库,然后再安装Nginx:

企业实战nginx动静分离安装配置

Nginx Web服务器目前在IT企业中应用最广泛,为什么它会如此让人热爱呢,因为它的高性能.稳定性,而且越来越发展,那Nginx在企业中是如何来应用的呢?Nginx动静分离是如何来配置的呢,今天我们将跟大家一起来构建一个Nginx动静分离的架构. 一.实践环境: 系统版本:CentOS6.0 X86_64 Nginx版本:Nginx-1.2.6 Tomcat版本:Tomcat-6.0.18 二.Nginx安装: 实际环境中安装Nginx,首先需要安装pcre库,然后再安装Nginx: #安装p

Nginx动静分离经典

Nginx:安装nginx之前需要安装pcre包和zlib以支持重写,正则以及网页压缩等等]把所需的包下载到/usr/src下[根据自己的习惯,路径可以改变]1.首先安装pcre: cd /usr/src &&tar xzf pcre-8.01.tar.gz &&cd pcre-8.01 && ./configure --prefix=/usr/local/pcre &&make &&make install 2.然后再安装n

Nginx动静分离经典案例配置

随着Nginx高性能Web服务器大量被使用,目前Nginx最新稳定版为1.2.6,张宴兄在实际应用中大量使用Nginx,并分享Nginx高性能Web服务器知识,使得Nginx在国内也是飞速的发展.那今天咱们再来温习一下Nginx 动静分离知识,这里仅供参考. 一.实践环境: 1 2 3 系统版本:CentOS6.0 X86_64 Nginx版本:Nginx-1.2.6 Tomcat版本:Tomcat-6.0.18 二.Nginx安装: 实际环境中安装Nginx,首先需要安装pcre库,然后再安装

详述Linux系统中搭建Nginx动静分离

Nginx动静分离介绍 Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术 针对PHP的动静分离 静态页面交给Nginx处理 动态页面交给PHP-FPM模块或Apache处理 在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式 反向代理原理 Nginx不仅能作为Web服务器,还具有反向代理.负载均衡和缓存的功能 Nginx通过proxy模块实现将客户端的请求代理至上游服务器,此时nginx与. 上游服务器的连接是通过ht

12. Nginx动静分离

一般来说,静态资源是指JavaScript.CSS.Img等文件,动态资源则是通过PHP.Java等后端语言运行一系列的代码逻辑来获取的. 如果是静态资源的请求,就直接让nginx在静态资源目录下面读取,然后返回给客户端 如果是动态资源的请求,则nginx利用反向代理把请求转发给后端应用去处理,然后后端应用将结果返回给nginx,nginx再返回给客户端 在使用前后端分离之后,可以很大程度的提升静态资源的访问速度,同时减轻后端应用的处理压力.拿PHP之Laravel框架来说,简单的获取一个静态文

keepalive高可用nginx(nginx动静分离)的实现

HA Cluster的配置前提: 1.各节点时间要同步: 2.确保iptables及selinux不会成为障碍: 3.(可选)各节点之间可通过主机名互相通信: 节点的名称设定与hosts文件中解析的主机名都要保持一致: # uname -n 获得的主机,与解析的主机名要相同: 4.(可选)各节点之间基于密钥认证的方式通过ssh互信通信: keepalive高可用nginx(nginx动静分离)的实现 一.各节点时间同步的实现方法 在centos中安装chrony,其根据时间协议配置文件将多台主机