Web服务器Nginx系统级别优化安全策略

Nginx(读音engine x)服务器由于性能优秀稳定、配置简单以及跨平台,被越来越多的公司和个人所采用,现已成为市场份额继Apache之后的第二大Web服务器。各大小网站论坛博客也介绍说明了Nginx从安装到优化、安全的各种配置。不过看了很多这些相关Nginx的文档之后,发现一个比较大的问题,就是这些文档基本也就从两个方面着手,一是修改Nginx的配置文件,二是调整操作系统的相关内核参数;而且大多数文档说明不够具体,缺乏比较系统级别的优化安全。本文将从Nginx安装开始,到修改配置文件,调整系统内核参数以及架构四个方面着手。


1.  安装

Nginx由于不断添加新的功能,附带的模块也越来越多。很多操作系统厂商为了用户方便安装管理,都增加了rpm、deb或者其他自有格式软件包,可以本地甚至在线安装。不过我不太建议使用这种安装方式,这虽然简化了安装,在线安装甚至可以自动解决软件依赖关系,但是安装后软件的文件布局过于分散,不便管理维护;同时也正是由于存在软件包之间的依赖关系,导致当有安全漏洞、或者性能或者稳定性等问题,只能更新升级Nginx新版本;或者添加新功能,需要安装新模块,这时反而更加麻烦。所以我建议使用源码编译安装管理。最重要的是采用非源码编译安装的方式,默认会添加许多模块,比如邮件相关、uwsgi、memcache等等,很多网站运行时这些模块根本未用到,虽然平时占用的资源很小,但是仍然可能是压弯骆驼的一根稻草。各种非必需模块默认安装运行的同时,也给Web系统带来了安全隐患。尽量保持软件的轻装上阵,是每个运维应当尽力做到的。我一般的编译参数如下:

./configure "--prefix=/App/nginx" "--with-http_stub_status_module" "--without-http_auth_basic_module" "--without-http_autoindex_module" "--without-http_browser_module" "--without-http_geo_module" "--without-http_limit_req_module" "--without-http_limit_conn_module" "--without-http_map_module" "--without-http_memcached_module" "--without-http_scgi_module" "--without-http_split_clients_module" "--without-http_ssi_module" "--without-http_userid_module" "--without-http_uwsgi_module" "--without-mail_imap_module" "--without-mail_pop3_module" "--without-mail_smtp_module" "--without-poll_module" "--without-select_module"

编译参数根据网站是否真正用到的原则增添或者减少,比如我们公司如果需要用到ssi模块,从而能够实现访问shtml页面,可以将 "--without-http_ssi_module" \ 这一行删除,那么Nginx将默认安装。大家可以通过运行 ./configure --help 查看编译帮助决定是否需要安装。


2.  配置

未完待续

本文出自 “松松” 博客,请务必保留此出处http://dongsong.blog.51cto.com/916653/1624445

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。