Nginx是一个基于类BSD协议发布的轻量级Web服务器/反向代理服务器和电子邮件(IMAP/POP3)代理服务器。其特点是占用内存少,并发能力强。事实上,nginx的并发能力在同类web服务器中确实表现的更好。中国大陆使用nginx网站的用户包括:百度、京东、新浪、网易、腾讯、淘宝等。也许你已经听说了上面关于Nginx的精彩,你可能已经非常喜欢它了,你正在思考如何为了提高Nginx服务器的安全性和稳定性,或者您正在考虑用Nginx替换Apache,那么这篇文章非常适合您继续阅读。本文将介绍提高Nginx服务器安全性、稳定性和性能的12个动作。1:及时更新Nginx。当前Nginx的稳定版本是1.14.0。最好升级到最新版本。如果你阅读官方发行说明,你会发现他们已经修复了很多错误。您不想为任何产品使用这样的生产环境。冒着错误的风险。此外,虽然包安装比从源代码编译更容易,但后一种选择有两个优点:1)它允许你向Nginx添加额外的模块(如more_header、mod_security),以及2)它总是提供比安装包见Nginx官网的releasenote。2:删除不用的Nginx模块在编译安装时,在执行./configure方法时添加如下配置指令,显式删除不用的模块:./configure--without-module1--without-module2--without-module3例如:./configure--without-http_dav_module--withouthttp_spdy_module#注意:配置说明由模块提供。确保您禁用的模块不包含您需要使用的指令!在决定禁用模块之前,应该查看Nginx文档以获取每个模块可用的指令列表。3:禁用Nginx配置中的server_tokens项。开启server_tokens后,404页面会显示当前Nginx的版本号。这样做显然不安全,因为黑客会利用这些信息尝试利用相应的Nginx版本。只需在nginx.conf的http模块中设置server_tokensoff,例如:server{listen192.168.0.25:80;Server_tokensoff;server_nametecmintlovesnginx.comwww.tecmintlovesnginx.com;access_log/var/www/logs/tecmintlovesnginx.access.log;error_log/var/www/logs/tecmintlovesnginx.error.logerror;root/var/www/tecmintlovesnginx.com/public_html;indexindex.htmlindex.htm;}#重启Nginx生效:4:禁止非法的HTTPUserAgentsUserAgent是HTTP协议中对浏览器的一种识别。禁止非法UserAgent可以阻止爬虫和扫描器的一些请求,防止这些请求大量消耗Nginx服务器资源。为了更好地维护,最好创建一个包含不期望的用户代理列表的文件。例如/etc/nginx/blockuseragents.rules包含以下内容:map$http_user_agent$blockedagent{default0;~*malicious1;~*bot1;~*backdoor1;~*crawler1;~*bandit1;}然后在配置文件的server模块中加入如下语句:include/etc/nginx/blockuseragents.rules;并添加if语句设置拦截页面:5:禁止一些不需要的HTTP方法,比如一些网站和应用程序,你可以只支持GET、POST和HEAD方法。在配置文件中为server模块添加如下方法可以防止一些欺骗攻击if($request_method!~^(GET|HEAD|POST)$){return444;}6:设置缓冲区容量上限这个设置可以防止缓冲区溢出攻击(也是Server模块)client_body_buffer_size1k;client_header_buffer_size1k;client_max_body_size1k;large_client_header_buffers21k;#设置后无论HTTP请求多少次,服务器系统的缓冲区都不会溢出。7:在http模块中限制最大连接数,在server模块外设置limit_conn_zone,可以在http、server或location模块中设置连接IP,设置limit_conn,可以设置最大IP连接数例如:limit_conn_zone$binary_remote_addr区域=地址:5m;limit_connaddr1;8:设置日志监控上面的截图已经有了。nginx日志设置方法,可能因为第7点的设置需要获取访问失败的日志grepaddr/var/www/logs/tecmintlovesnginx.error.log--color=auto同时可以同时在日志中过滤以下内容:客户端IP浏览器类型HTTP请求方式请求内容服务器响应9:禁止从你的服务器外链图片这样做显然会增加你的服务器的带宽压力。假设你有一个存放图片的img目录,你自己的IP是192.168.0.25。添加如下配置防止外链location/img/{valid_referersnoneblocked192.168.0.25;如果($invalid_referer){返回403;}}10:禁用SSL,只打开TLS。如果可能,尽量避免使用SSL并改用TLS。在Server模块中可以进行如下设置:ssl_protocolsTLSv1TLSv1.1TLSv1.2;11:做证书加密(HTTPS)先生成Key和integer,可以使用以下任意一种:#opensslgenrsa-aes256-outtecmintlovesnginx.key1024#opensslreq-new-keytecmintlovesnginx.key-outtecmintlovesnginx.csr#cptecmintlovesnginx.keytecmintlovesnginx.key.org#opensslrsa-intecmintlovesnginx.key.org-outtecmintlovesnginx.key#opensslx509-req-days365-intecmintlovesnginx.csr-signkeytecmintlovesnginx.key-outtecmintlovesnginx.crt#然后配置服务器模块server{4s2128listen8;服务器令牌关闭;server_nametecmintlovesnginx.comwww.tecmintlovesnginx.com;root/var/www/tecmintlovesnginx.com/public_html;ssl_certificate/etc/nginx/sites-enabled/certs/tecmintlovesnginx.crt;ssl_certificate_key/etc/nginx/sites-enabled/certs/tecmintlovesnginx.key;ssl_protocolsTLSv1TLSv1.1TLSv1.2;}12:将HTTP请求重定向到HTTPS,在第11点的基础上增加return301https://$server_name$request_uri;结论本文分享了一些保护NginxWeb服务器的技巧。我很想听听你的想法。如果您还有其他建议,欢迎评论,与大家分享您的经验。原文:https://www.toutiao.com/i6567...
