nginx之rewrite的生产环境实例

一.静态请求分离:
需要:公司网站静态文件太多了,访问起来很慢,比如说视频,图片,很占用流量带宽。或者你在云服务器上的备案信息更改了(比如说www.1.com),需要注销才能变动,那么你先可以域名解析到香港、美国的云服务器上,但是访问速度太慢了,导致视频严重卡顿,这个时候你可以把视频,图片放到国内的备案的云主机上(www.2.com),解决你的域名注销不能访问,又不会太卡顿的问题。
虚拟主机配置:

 server
   {
      listen 80;
       server_name www.1.com;
       index index.html;
       root /data/wwwroot/www.1.com;
       location ~* ^.+\.(jpg|jpeg|gif|css|js|png)$
       {
           rewrite /(.*) http://www.2.com/$1 permanent;
       }
      access_log /tmp/1.log ligen;
  }

测试:

curl -x127.0.0.1:80 www.1.com/1.png -I
HTTP/1.1 301 Moved Permanently
Location: http://www.2.com/1.png

二.防盗链:
就是防止别人转载你网站的链接,消耗我们网站的带宽流量
虚拟主机配置:

server
   {
       listen 80;
       server_name www.1.com;
       index index.html;
       root /data/wwwroot/www.1.com;
       location ~* ^.*\.(jpg|jpeg|png|gif|css|png|js|rar|zip|flv)$
       {
           valid_referers none blocked server_names *.1.com 1.com;
          if ($invalid_referer)
          {
              return 403;
          }
     }
      access_log /tmp/1.log ligen;
  }

valid_referer:建立白名单,符合白名单的放行。
none:表示空referer,正常浏览器访问,不是从其他地方跳转过来的。
blocked:表示不是http或者https开头的经过改变的referer。
server_name:表示具体的白名单域名,是可以从这些网站跳过来的。
$invalid_referer:黑名单,不是白名单里面的都属于。
上面代码黑名单返回403。
测试:
-e:指定referer。

curl -e "http://www.1.com/1.html" -x127.0.0.1:80 www.1.com/1.png -I
HTTP/1.1 404 Not Found   #404,不是403,表示可以访问,只不过网站上没有1.png文件。
curl -e "http://www.2.com/1.html" -x127.0.0.1:80 www.1.com/1.png -I
HTTP/1.1 403 Forbidden   #www.2.com不在白名单里。

rewrite多个条件的并且:
首先,nginx暂时不支持if语句嵌套。
curl -A :指定浏览器标识

 server
   {
       listen 80;
       server_name www.1.com;
       index index.html;
       root /data/wwwroot/www.1.com;
       location /
       {
           set $a 0;  #设置变量a 值为0
          if ($request_uri ~ "^/abc/")
          {
             set $a "${a}1";  #if如果为真,此a为01。
         }
          if ($http_user_agent ~* 'IE|chrome')
          {
              set $a "${a}2";  
          }
          if ($a = "012")
          {
              return 403;
         }
      }
  }

测试:

curl  -A "IE" -x 127.0.0.1:80 www.1.com/abc/1.html 
<html>
<head><title>403 Forbidden</title></head>
curl  -A "IiaE" -x 127.0.0.1:80 www.1.com/abc/1.html 
<html>
<head><title>404 Not Found</title></head>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值