192.168.1.1-路由器设置 | 192.168.0.1-无线路由器设置

Web服务器Nginx系统级别的优化方法和策略

发布时间:2015-03-26 12:02

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.  配置
未完待续

关于我们 - RSS地图 - 最近更新 - 友情链接 - 网站地图 - 版权声明