1.多线程处理(跟服务器的核数有关)nginx
worker_processes 8; #数字建议与CPU核心线程数相同
2.配置nginx进程打开的最多文件数目web
worker_rlimit_nofile 65535; #数字建议与系统文件打开数量一致。
3.使用epoll的I/O模型,用这个模型来高效处理异步事件算法
use epoll;
4.配置http链接超时时间(时间过长会由于无效的链接一直占用nginx链接数,服务会崩的)缓存
keepalive_timeout 60;
5.配置客户端请求头部的缓冲区大小安全
client_header_buffer_size 4k;
6.配置检查一次缓存的有效信息时间间隔服务器
open_file_cache_valid 30s;
7.阻塞数据包发送;cookie
tcp_nopush on;
<!--more-->网络
备注:若是会lua去维护软waf(openresty)模块会更方便。
http代码区段下进行添加如下nginx模块多线程
1.下降限制缓冲区溢出***的几率并发
client_body_buffer_size 1K; client_header_buffer_size 1k; client_max_body_size 1k; large_client_header_buffers 2 1k;
2.用timeout方式下降DoS***的几率
client_body_timeout 10; client_header_timeout 10; keepalive_timeout 65; send_timeout 10;
3.经过限制用户并发链接数下降DoS***的几率
limit_zone slimits $binary_remote_addr 5m; limit_conn slimits 5;
4.隐藏版本号,下降发现版本漏洞进行
server_tokens off;
5.开启SSL加密认证(在server区段插入)
ssl on; ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; #这里能够添加更高的安全算法,以达到国家安全等级。
6.访问黑白名单(若是是对公访问就不用配置了,仅针对特殊文件目录)
location /admin/ { allow 192.168.25.0/24; #仅容许192.168.25.0/24访问/admin目录,其余都禁止。 deny all; }
7.配置蜘蛛爬虫拦截
if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot") { return 403; }
同时配置站点目录的robots.txt(若是不会写,能够搜 robots.txt生成)
# robots.txt User-agent: * Disallow: / Crawl-delay: 120 Disallow: /
8.设置资源防盗链(生产亲测,很是有效)
location /images/ { valid_referers none blocked www.leoheng.com leoheng.com; if ($invalid_referer) { return 403; } }
9.防御XSS(跨站***),配置hearder,提升站点稳定性
add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff";
1.下降timewait数值、减小等待时间。
net.ipv4.tcp_max_tw_buckets = 5000
2.容许系统打开端口的范围。
net.ipv4.ip_local_port_range = 1024 65000
3.启用TIME-WAIT状态sockets快速回收功能(1表示启用;0表示关闭。NAT模式下不建议使用。)
net.ipv4.tcp_tw_recycle = 0
备注:协同net.ipv4.tcp_timestamps一并开启,能达到最佳效果,能够快速回收socket。
4.启动重用功能(可将TIME-WAIT状态的sockets从新用于新的TCP链接)
net.ipv4.tcp_tw_reuse = 1
5.开启SYN Cookies(当出现SYN等待队列溢出时,启用cookies来处理。)
net.ipv4.tcp_syncookies = 1
6.web应用中listen函数的backlog默认会给咱们内核参数的net.core.somaxconn限制到128,同时也意味着在高并发的场景下会致使链接超时或者触发重传。
net.core.somaxconn = 262144
7.当网络接口接收数据包的速率比内核处理数据包的速率要快的时候,容许送到队列的数据包的最大数目。
net.core.netdev_max_backlog = 262144
8.关于配置TCP的套接字,设置定值为了防止DoS,但若是主机增长了内存,数值也应该相对应调大。
net.ipv4.tcp_max_orphans = 262144
9.防止内存溢出OOM
vm.overcommit_memory = 0