web优化之nginx优化<六>

这里我们接着web之nginx优化<->继续分析nginx优化之资源防盗链,方爬虫,控制目录权限、CDN加速重要性及方法。

12.资源防盗链

例如:资源在优酷视频,但显示在我自己的博客上,会增加优酷的带宽,但是访问量在我的博客;会节省我的资源。

1)根据http referer 实现防盗链

通过referer可以检测目标访问的来源网页,如果是资源文件,可以跟踪到显示它的网页地址。

2)其他的防盗链方案:

·cookie防盗链;

·加密URL路径,定时失效;

·lighttpd有类似的插件mod_secdownload,先在服务端配置此模块,设置一个固定用于加密的字符串,比如Yvonne,然后设置一个url前缀,比如/mp4/,再设置一个过期时间,比如1小时,然后在通过一段PHP代码,利用加密字符串和系统时间等通过md5算法加密生成一个加密字符串,最终获取到的文件的url链接中会带有一个时间戳和一个加密的MD5数值,当访问时系统会对这两个数据进行验证,如果时间不在预期的时间段内(如1小时)则失效;如果时间戳符合条件,但是加密的字符串不符合条件也失效,从而达到防盗链的效果。

3)实现防盗链:

location ~* \.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {
 valid_referers none blocked *.etiantian.org etiantian.org; 
if ($invalid_referer) { 
rewrite ^/ 
http://www.etiantian.org/img/nolink.jpg; 
} 
}
server {
listen 80 default_server;
server_name _;
return 501;
}
    server {
        listen       80;
        root   html/www;
        server_name  
www.etiantian.org;
        location / {
            index  index.html index.htm;
        }
location ~* \.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {
 valid_referers none blocked *.etiantian.org etiantian.org; 
if ($invalid_referer) { 
rewrite ^/ 
http://bbs.etiantian.org/img/nolink.jpg; 
} 
}
    access_log  logs/www-access.log  main;
    }
    server {
        listen       80;
        root   html/dao;
        server_name  
www.daolian.com;
        location / {
            index  index.html index.htm;
        }
access_log  logs/dao-access.log  main;
    }
    server {
        listen       80;
        root   html/bbs;
        server_name  bbs.etiantian.org;
        location / {
            index  index.html index.htm;
        }
access_log  logs/bbs-access.log  main;
    }
}

在上面这段防盗链设置中,分别针对不同文件类型和不同的目录进行了设置,读者可以根据自己的需求进行类似的设定。

·"jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar"表示对以jpg、gif、png、swf、flv、wma、wmv、asf、mp3、mmf、zip、rar为后缀的文件实行防盗链处理;

·"*.etiantian.org etiantian.org"表示这个请求可以正常访问上面指定的文件资源;

·if{}中的内容的意思是:如果地址不是上面指定的地址就跳转到通过rewrite指定的地址,也可以直接通过return返回403错误;

·return 403 为自定义的http返回状态码;

·以下内容表示显示一张防盗链图片:

rewrite ^/ 
http://bbs.etiantian.org/img/nolink.jpg;

·access_log off:不记录访问日志,减轻压力;

·expires 3d 所有文件3天的浏览器缓存;

location /images { 
root /data0/www/www;
  valid_referers none blocked *.etiantian.org etiantian.org; 
if ($invalid_referer){ 
return 403; 
} 
}

阿里门户天猫网站的nginx优雅显示配置案例如下:

error_page   500 501 502 503 504  http://err.tmall.com/error2.html;
error_page 400 403 404 405 408 410 411 412 413 414 415 http://err.tmall.com/error1.html;

13.站点页面权限控制

服务器角色 权限处理 安全系数
动态web集群
目录权限755,文件权限644

所有目录和文件属组和属主都是root

环境nginx+php

文件不能被改;
目录不能被写入;
安全系数10
static图片集群 目录权限是755,文件权限644;
所有目录和文件属组和属主都是root
环境nginx;
文件不能被改;
目录不能被写入;
安全系数10
上传upload集群 目录权限755,文件权限644;
所有目录和文件属组和属主都是root
特别:
用户上传的目录设置为755,用户使用nginx服务的用户
文件不能被改,目录不能被写入;
特别:
用户上传的目录可以允许写入
(前面通过nginx会禁止读文件),
安全系数8

14.防爬虫

1)先来看看何为Robots协议?

Robots协议,又称机器人协议或爬虫协议,该协议就搜索引擎抓取网站内容的范围作了约定,包括网站是否希望被搜索引擎抓取,哪些内容不允许被抓取,网络爬虫据此“自觉地”抓取或者不抓取该网页内容。自推出以来Robots协议已成为网站保护自有敏感数据和网民隐私的国际惯例。

小case: http://tech.qq.com/a/20131016/017362.htm2

2)防爬虫

if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot") { 
     return 403; 
}
#Only allow these request methods
     if ($request_method !~ ^(GET|HEAD|POST)$ ) {
         return 501;
     }
#Do not accept DELETE, SEARCH and other methods

HTTP协议中GET、POST和HEAD的介绍:
GET: 请求指定的页面信息,并返回实体主体。
HEAD: 只请求页面的首部。
POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。

15.Linux内核优化:

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000    65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
#以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。
##net.nf_conntrack_max = 25000000
##net.netfilter.nf_conntrack_max = 25000000
##net.netfilter.nf_conntrack_tcp_timeout_established = 180
##net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
#writen by troy#
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time =600
net.ipv4.ip_local_port_range = 4000    65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
#for iptables
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

16.用CDN做网站加速

1)CDN简介

·CDN是一款用于静态页面的分布式缓存。

·CDN的价值:

a.为企业架构省钱;

b.提升用户访问网站体验;

c.可以阻挡大部分流量攻击,如DOS;

·企业使用CDN的基本要求[待补充]

更多优化见 http://7826443.blog.51cto.com/7816443/1705051

时间: 2024-12-24 17:41:32

web优化之nginx优化<六>的相关文章

web优化之nginx优化&lt;七&gt;

2.更改nginx的默认用户 这里我们接着web之nginx优化<->继续分析使用普通用户的重要性. 在高标准环境下尽量不使用root,尽量使用普通用户,这样外部人员提权也提不到root用户.搭建服务的时候就用普通用户搭建,生产环境下最好不要随便用root用户. 1)让nginx服务使用普通用户 ·root用户跑master进程的隐患: a.管理权限必须是root,这就使得最小化分配权限原则遇到难题 b.使用root跑nginx服务,一旦网站出问题,用户很容易获得服务的root权限 ·ngin

web优化之nginx优化详解

2.更改nginx的默认用户 在高标准环境下尽量不使用root,尽量使用普通用户,这样外部人员提权也提不到root用户. 搭建服务的时候就用普通用户搭建,生产环境下最好不要随便用root用户. 3.调整work线程数,并发连接数,文件描述符,CPU的亲和力 1) worker_process  调成CPU的核数 x2 2)并发链接是单个worker的并发链接 vim /application/nginx/conf/nginx.conf worker_connections 20480;  Max

web优化之nginx优化[隐藏web名称及版本号]

隐藏web名称及版本号 1)信息泄露: 报错时显示信息: curl显示信息:     [[email protected] ~]# curl -I http://www.etiantian.org/sd     HTTP/1.1 404 NOT FOUND                Server: nginx/1.2.9          #未隐藏版本号     Date: Wed, 21 Oct 2015 15:57:08 GMT     Content-Type: text/html  

nginx之旅(第六篇):nginx优化--nginx优化目的、工作进程优化、长连接设置、数据压缩、客户端缓存

一.Nginx优化目的 标准情况下,软件默认的参数都是对安装软件的硬件标准来设置的,目前我们服务?的硬件资源远远大于要求的标准,所以为了让服务?性能更加出众,充分利用服务?的硬件资源,我们一般需要优化APP的并发数来提升服务器?的性能. 二.工作进程优化 1) worker_processes worker_processes指Nginx的工作进程,这个值是直接受到服务器CPU核数量影响的(当然也有其他影响),Nginx默认配置为auto,意思是会自动检测CPU核做修改,建议worker_pro

java架构师负载均衡、高并发、nginx优化、tomcat集群、异步性能优化、Dubbo分布式、Redis持久化、ActiveMQ中间件、Netty互联网、spring大型分布式项目实战视频教程百度网盘

15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; color: #FF0 } 15套java架构师.集群.高可用.高可扩展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布式项目实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  clo

nginx优化 突破十万并发

nginx优化 突破十万并发 一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8). 2. worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以

nginx优化(突破十万并发)

此文章非原创,出自鸟哥之手~ http://blog.chinaunix.net/uid-25266990-id-2985541.html 仅仅改了排版 --> 为了好看 ------------------------------------------------------------------------------ 分隔线 nginx优化(配置文件+内核优化) 一.nginx配置文件 1.worker_processes  8; 按照cpu数目来指定,一般为它的倍数 2.worker

nginx优化25条

1.1        隐藏nginx header里版本号信息 1.2        更改源码隐藏软件名称及版本号 1.3        更改掉nginx默认用户及用户组(worker进程服务用户优化) 1.4        配置nginx worker进程个数 1.5        根据cpu核数进行nginx进程优化 1.6        nginx事件处理模型优化 1.7        调整nginx worker单个进程允许的客户端最大连接数 1.8        配置nginx wor

Linux之nginx优化与防盗链

Linux之nginx优化与防盗链 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine X",是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发. Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理.负载平衡.但是Nginx并不支持cgi方式运行,原因是可以减少因