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;
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END