nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除

一,nginx反向代理配置

     #tomcat

 

显然就是用户访问www.wolfdream.com(需要设置本地localhost,将www.wolfdream.com指向nginx所在IP)的时候(或将www.wolfdream.com直接写在nginx所在的IP地址),将请求转到到后台的tomcat服务器,即127.0.0.1:8080,并将请求到的数据转发给client

二,动静态请求相分离

   神马意思?图片,JS,HTML等静态的东西去访问一台专门的服务器,而动态的请求去访问另一台服务器。就这么简单,上例子:

 

    
    
server { listen 192.168 . 154.128 : 80 ; server_name image . wolfdream . com ; index index . html ; # proxy_pass http: // tomcat_server ; # charset koi8-r ; # access_log logs / host . access . log main ; location / { root html ; # index index . html index . htm ; proxy_redirect off ; proxy_set_header Host $ host ; proxy_set_header X-Real-IP $ remote_addr ; proxy_set_header X-Forwarded- For $ proxy_add_x_forwarded_for ; } location ~ . * /.( gif|jpg|jpeg|png|bmp|swf )$ { valid_referers none blocked 192.168 . 154.128 192.168 . 154.1 ; if ($ invalid_referer ) { rewrite ^ / 403 . jpg break ; } if ( !-f $ request_filename ) { rewrite ^ / 404 . jpg last ; } expires 30d ; } # error_page 404 / 404 . html ; # redirect server error pages to the static page / 50x . html # error_page 500 502 503 504 / 50x . html ; location = / 404 . jpg { root html ; } } tomcat upstream tomcat_server{ server 127.0 . 0.1 : 8080 ; } server{ listen 192.168 . 154.128 ; server_name www . wolfdream . com ; location / { proxy_redirect off ; proxy_set_header Host $ host ; proxy_set_header X-Real-IP $ remote_addr ; proxy_set_header X-Forwarded- For $ proxy_add_x_forwarded_for ; proxy_pass http: // tomcat_server ; } }

 

上面这种方式是通过设定不同的域名,可不可以在同一个域名中,通过判断后缀来将动态与静态请求相分离呢?

 

    
    
# tomcat upstream tomcat_server{ server 127.0 . 0.1 : 8080 ; } server{ listen 192.168 . 154.128 ; server_name www . wolf . com ; location ~ . * /.( gif|jpg|jpeg|png|bmp|swf )$ { root html ; } location ~ . * /.( jsp| do )$ { proxy_redirect off ; proxy_set_header Host $ host ; proxy_set_header X-Real-IP $ remote_addr ; proxy_set_header X-Forwarded- For $ proxy_add_x_forwarded_for ; proxy_pass http: // tomcat_server ; }

 

OK!同一个域名,根据后缀不同,请求不同的服务,实现动态静态请求相分离。仔细想一想,如果又出现了一种静态的文件,比如*.abc ,那难道又去修改那个配制文件吗?显然不太合理,所以可以考虑将所有的表态文件放在同一个根目录下面,比如/static那么可以将上面的静态页面请求修改一下:

 

    
    
ocation / static { root html / static ; }

 

咦这样是不是就好一些了,而且文件的存放也比较有规范了。

三,nginx缓存应用

nginx具有web缓存服务,proxy_cache,但是有一个问题就是,proxy_cache不能清除指定的URL缓存,只能设置URL过期时间,但是有问题,有人就会很快解决问题,nginx第三方模块ngx_cache_purge能清除指定URL。

  nginx安装时需要将ngx_cache_purege加载进去。

 

    
    
./ configure --user = www --group = www --add-module =/ root / dxm / nginx / ngx_cache_purge- 1.2

 

其中,/root/dxm/nginx/ngx_cache_purge-1.2为ngx_cache_purge解压路径(附件中提供ngx_cache_purge tar包下载)

现在来一段实例,实现图片缓存:

   话说proxy_tem_path,与proxy_cache_path必须在同一个分区之下!

 

 

    
    
upstream tomcat_server{ server 127.0 . 0.1 : 8080 ; } server{ listen 192.168 . 154.128 ; server_name www . wolf . com ; location ~ . * /.( gif|jpg|jpeg|png|bmp|swf )$ { proxy_cache cache_one ; proxy_cache_methods GET HEAD POST ; proxy_cache_min_uses 1 ; proxy_cache_valid 200 302 10m ; proxy_cache_valid 404 1m ; proxy_cache_valid any 1m ; proxy_cache_key " $host:$server_port$uri$is_args$args " ; proxy_redirect off ; proxy_set_header Host $ host ; proxy_set_header X-Real-IP $ remote_addr ; proxy_set_header X-Forwarded- For $ proxy_add_x_forwarded_for ; proxy_pass http: // tomcat_server ; } location ~ . * /.( jsp )$ { proxy_redirect off ; proxy_set_header Host $ host ; proxy_set_header X-Real-IP $ remote_addr ; proxy_set_header X-Forwarded- For $ proxy_add_x_forwarded_for ; proxy_pass http: // tomcat_server ; } location ~ / purge (/. * ) { allow 192.168 . 154.128 ; allow 192.168 . 154.1 ; deny all ; proxy_cache_purge cache_one $ host: $ server_port $ 1 $ is_args $ args ; }

 

恩,静态页面缓存,动态请求不缓存!

大家看一下最后一段的那个purege配置,很显然,表示哪些IP可以手动清除指定的URL

比如,www.wolfdraem.cn/1.jpg可以访问到我的图片,那么用www.wolfdream.cn/purge/1.jpg  就可以清除图片缓存了。

    
    
proxy_temp_path / usr / local / nginx / proxy_temp ; proxy_cache_path / usr / local / nginx / proxy_cache_path levels = 1 : 2 keys_zone = cache_one:200m inactive = 1d max_size = 1g ;
    
    
upstream tomcat_server{ server 127.0 . 0.1 : 8080 ; } erver{ listen 80 ; server_name www . wolfdream . com ; location / { proxy_redirect off ; proxy_set_header Host $ host ; proxy_set_header X-Real-IP $ remote_addr ; proxy_set_header X-Forwarded- For $ proxy_add_x_forwarded_for ; proxy_pass http: // tomcat_server ; }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值