nginx配置web攻击防御及基础优化策略

nginx是很常用的一款web应用程序,在linux下性能强劲,速度极快,就是配置有点复杂,但我还是很喜欢。虽然和功能俱全的Apache不同,nginx没有全面的模块体系,但是自带的功能仍然是给力的。就比如对于访问ip的相关限制,以及内部自身的调整,虽然说都很基础,但是用起来也是很舒服的,在防御CC攻击和节约服务器性能上,nginx做得很好。
随意,整理一下nginx配置的教程吧。
如果想要站点内所有网站都生效,可以修改nginx.conf文件,如果是指定单个网站,那就设置对于的conf文件即可。

以下的配置代码都写在http {}中,比如

http {
    //所有的配置代码
}

本文参考该教程:点击进入

最先开始的基础配置

设置KeepAlive超时时间,禁止nginx返回当前版本码,调整响散列表的冲突率及相关内存的使用

keepalive_timeout    10;
server_tokens off;
types_hash_max_size  2048;

对性能的优化配置
开启sendfile之类文件传输读写的配置,提升应用运行速度。同时设置文件的缓存选项和超时的限制,在节约服务器性能的情况下优化整体的速率。

sendfile     on;
tcp_nopush   on;
tcp_nodelay  on;
open_file_cache            max=50000  inactive=20s;
open_file_cache_valid      30s;
open_file_cache_min_uses   2;
open_file_cache_errors     on;
reset_timedout_connection  on;
client_body_timeout        10;
send_timeout               2;

web攻击的防御配置
在这些配置中,设置缓存区,提升了nginx的网络吞吐量,配置大文件的上传的限制。最后设置并发连接数的限制,并且对高线程访问依次加载。还对用户在一定时间内的访问流量,频率进行限制,也就是说当CC攻击或者恶意采集出现的时候,可以拦截掉相当一部分,但是在正常情况下limit_conn_zone和limit_req_zone应该放宽限制,保证一般用户的正常访问和搜索引擎蜘蛛的抓取。
当然,此类方法主要抵御一定量的流量攻击和恶意采集,无法对大型的攻击有良好作用。

client_body_buffer_size      128k;
large_client_header_buffers  4 32k;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
client_max_body_size 50m;
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=50r/s;
limit_conn conn_limit_per_ip 20;
limit_req zone=req_limit_per_ip burst=20;

以上就是优化和web防御相关的nginx配置。
【规则之树版权所有,转载注明来源】

发表评论
加载中...

相关文章