Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。
由于Nginx本身的一些优点,轻量,开源,易用,越来越多的公司使用nginx作为自己公司的web应用服务器,本文详细介绍nginx源码安装的同时并对nginx进行优化配置。
一、Nginx的优化
1、编译安装前优化
编译前的优化主要是用来修改程序名等等,目的更改源码隐藏软件名称和版本号
安装zlib-devel、pcre-devel等依赖包
下载nginx的源码包:
解压源码包:
生产环境下如果让黑客知道你用的是什么web软件搭建的网站很容易遭到攻击和漏洞扫描,隐藏软件名称和版本号就成为了势在必行的一件事。
//此行修改的是你想要的版本
#define NGINX_VERSION "1.10.2" //第13行
//此行修改的是你想修改的软件名称
#define NGINX_VER "nginx/" NGINX_VERSION //第14行
修改上面的信息,即可更改nginx显示版本。例如:
修改HTTP头信息中的connection字段,防止回显具体版本号
通用http头,通用头包含请求和响应消息都支持的头,通用头包含Cache-Control、 Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头,一般将会作为实体头处理。那么也就是说有部分设备,或者是软件,能获取到connection,部分不能,要隐藏就要彻底!
修改前:
static char ngx_http_server_string[] = "Server: nginx" CRLF; //第49行
修改后:
定义了http错误码的返回
有时候我们页面程序出现错误,Nginx会代我们返回相应的错误代码,回显的时候,会带上nginx和版本号,我们把他隐藏起来
[root@txn nginx-1.10.2]# vi src/http/ngx_http_special_response.c
修改前
static char ngx_http_server_string[] = "Server: nginx" CRLF;
修改后
2、安装ngnix
创建nginx运行账户www并加入到www组,不允许www用户直接登录系统
编译nginx 指定用户和组
相关选项说明
--with-http_dav_module #增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法
--with-http_stub_status_module #获取Nginx的状态统计信息
--with-http_addition_module #作为一个输出过滤器,支持不完全缓冲,分部分相应请求
--with-http_sub_module #允许一些其他文本替换Nginx相应中的一些文本
--with-http_flv_module #提供支持flv视频文件支持
--with-http_mp4_module #提供支持mp4视频文件支持,提供伪流媒体服务端支持
--with-http_ssl_module #启用ngx_http_ssl_module
安装
设置nginx软连接方便以后使用
启动nginx
测试是否隐藏了版本和软件名
3、nginx配置项优化