首页 > 代码库 > nginx防盗链和内核参数优化

nginx防盗链和内核参数优化

    防盗链:防止别人直接从你网站引用图片等链接,消耗了你的资源和网络流量。有几种解决方法:1,水印,品牌宣传,带宽,服务器足够。2,防火墙,直接控制,前提是知道ip来源。3,防盗链策略下面的方法直接给与404错误提示

    location ~* ^.+\.(jpg | gif | png | swf | flv | wma | wmv | asf | mp3 | mmf | zip | rar)$ {

    if ($invalid_referer) {

    #retrun 302 http://www.tanhong.com/img/nolink.jpg;

    return 404;

    break;

    }

    accesss_log off;

    }

内核参数优化

    fs.file-max=999999:参数表示进程可以同时打开的最大句柄数,直线限制最大并发连接数,根据实际情况配置。

    net.ipv4.tcp_max_tw_buckets=6000:表示操作系统允许TIME_WAIT套接字数量的最大值,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。参数默认为180000,过多的TIME_WAIT套接字会使web服务器变慢。

    net.ipv4.ip_local_port_range=1024 65000:允许系统打开的端口范围

    net.ipv4.tcp_tw_recycle=1:启用timewait快速回收

    net.ipv4.tcp_tw_reuse=1:开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接。对于服务器来说很有意义,因为服务器上总会有大量TIME-WAIT状态的连接。

    net.ipv4.tcp_keepalive_time=30:表示当keepalive启用时,TCP发送keepalive消息的频度。默认2个小时。

    net.ipv4.tcp_syncookies=1:开启SYN Cookies,当出现SYN等待syn等待队列溢出时,启用cookies来处理。

    net.core.somaxconn=40960:web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制128,而nginx定义的NGX_LISTEN_BACKLOG默认为511。必要需要调整这个值。

    对于一个TCP连接,Server与client需要通过三次握手来建立网络连接。当三次握手成功后,可以看到端口的状态有LISTEN转变为ESTABLISHED,接着这条链路上就可以传送数据,每一个处于监听状态的端口,都有自己的监听队列,监听队列的长度与如somaxconn参数和使用该端口的程序中listen函数有关。

    somaxconn参数和使用该端口的程序中listen函数有关

    somaxconn参数,定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为128,对于一个经常处理新连接的高负载web服务环境128太小。大多数这个值建议增加至1024.大的侦听队列对防止拒绝dos攻击也会有帮助

    net.core.netdev_max_backlog=262144:每个网络借口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

    net.ipv4.tcp_max_syn_backlog=262144:这个参数标示TCP三次握手建立阶段接受SYn请求队列的最大长度,默认为1024,将其设置得大一些可以使出现nginx繁忙来不及accept新连接的情况时,linux不至于丢失客户端发起的连接请求。

    net.ipv4.tcp_rmem=10240 87380 12582912:这个参数定义了TCP接受缓存的最小值,默认值,最大值。

    net.ipv4.tcp_wmem=10240 87380 1252912:这个参数定义了TCP发送缓存

     net.core.rmem_default = 6291456:这个参数表示内核套接字接受缓存区默认的大小。

    net.core.wmem_default = 6291456:这个参数表示内核套接字发送缓存区默认的大小           net.core.rmem_max = 12582912:这个参数表示内核套接字接受缓存区的最大大小。

    net.core.wmem_max = 12582912:这个参数表示内核套接字发送缓存区的最大大小。

                     net.ipv4.tcp_syncookies = 1:该参数与性能无关,用于解决TCPSYN攻击


本文出自 “11853028” 博客,请务必保留此出处http://tanhong.blog.51cto.com/11853028/1918332

nginx防盗链和内核参数优化