神奇的nginx

一,设置默认图片

 

不知道大家有没有遇到过,当你的系统的某些图片不存的时候,你须要提供一张默认的图片,404.jpg?恩,做为一个友好的提示,这是必须的。用nginx实现这个功能很容易。

 

 

location ~* .*\.(jpg|jpeg|gif|bmp)$ {
            if (!-f $request_filename) {#同鞋们,if后面需要一个空格哦~~~
                  rewrite ^ /404.jpg last;
            } 
         }

 

二,设置默认后缀

这样,当你图片不存时,将会返回默认的404.jpg图片,当然用户浏览器中的URL是不会变的。假如你的系统中全是JPG格式的图片,你的程序在访问的时候,如果觉得每一个图片都要加一个.jpg后缀,是不是很麻烦,OK,nginx也能很容易的解决。

 

 

 
location ~* ^/photo/([0-9]+)$ {
                  rewrite ^/photo/([0-9]+)$  /photo/$1.jpg last;
          }

 

三,nginx大战死代码

上面是关于nginx的很简单的应用,在开发过程中,我遇到过一个稍微复杂一点点的问题,就是我以前将我的图片存在A服务器上(A服务器到nginx上的nfs映射为/usr/imgs/11_59/),以/11/11*.jpg的形式访问,11即图片的最后两位数字,但量随着图片的增多,A服务器放不下更多的图片(图片名称是以递增方式命名的),当图片名称变人55....jpg的时候,我发现A服务器放不下更多的图片,这个时候,怎么办?

 

可能大家用脚指头想一想就知道,添加一台服务器B

 

对了,我也是这么想的。于是啊,我建立了B服务器到nginx所在服务器的nfs映射(/usr/local/60_99),好了,到这里总算解决了图片在一个服务器存储不够的问题,可是接下问题又来了,我的程序中,访问图片的地址是写死了的,即/XX/XX[0,9]+.jpg的形式访问(XX即图片地址的前两位),天啊,我怎么知道图片到底在哪个服务器呢?

 

正当我们愁眉苦脸的时候,nginx又闪亮登场,大叫一声“交给我”

 

 

location  ~ /photo/([1-5][0-9]) {
     root   /user/imgs/11_55;
 }

location  ~ /photo/([6-9][0-9]) {
     root   /user/imgs/60_99;
 }

 (解释一下:root 的功能就是会在之前你的访问地址/photo/... 前面加上 /user/imgs/60_99/ 即将你访问的地址指向/user/imgs/60_99/photo/*.jpg )

 

四,nginx设置图片防盗链接

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;

	}
 

先来一下效果:

 


大家记得将location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

整合到一起去哦,对了,注意一下这个:
if ($invalid_referer)
{
rewrite ^  /403.jpg break;
}



哇~~~~,世界终于清静了。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值