Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发.
Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。
由于Nginx本身的一些优点,轻量,开源,易用,越来越多的公司使用nginx作为自己公司的web应用服务器,本文详细介绍nginx源码安装的同时并对nginx进行优化配置。
一、Nginx的优化
1、编译安装前优化
编译前的优化主要是用来修改程序名等等,目的更改源码隐藏软件名称和版本号
安装zlib-devel、pcre-devel等依赖包
[root@www ~]# yum -y install gcc gcc-c++ make libtool zlib zlib-devel pcre pcre-devel openssl openssl-devel
下载nginx的源码包:http://nginx.org/download
解压源码包:
[root@www ~]# tar zxf nginx-1.10.2.tar.gz
[root@www ~]# cd nginx-1.10.2/
隐藏软件名称和版本号
[root@www nginx-1.10.2]# vim src/core/nginx.h
//此行修改的是你想要的版本
#define NGINX_VERSION "1.10.2" //第13行
//此行修改的是你想修改的软件名称
#define NGINX_VER "nginx/" NGINX_VERSION //第14行
修改上面的信息,即可更改nginx显示版本。例如:
#define NGINX_VERSION "7.0"
#define NGINX_VER "IIS/" NGINX_VERSION
修改HTTP头信息中的connection字段,防止回显具体版本号
拓展:通用http头,通用头包含请求和响应消息都支持的头,通用头包含Cache-Control、 Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头,一般将会作为实体头处理。那么也就是说有部分设备,或者是软件,能获取到connection,部分不能,要隐藏就要彻底!
[root@www nginx-1.10.2]# vi src/http/ngx_http_header_filter_module.c
修改前:
static char ngx_http_server_string[] = "Server: nginx" CRLF; //第49行
修改后:
static char ngx_http_server_string[] = "Server: IIS" CRLF;
定义了http错误码的返回
有时候我们页面程序出现错误,Nginx会代我们返回相应的错误代码,回显的时候,会带上nginx和版本号,我们把他隐藏起来
[root@www nginx-1.10.2]# vi src/http/ngx_http_special_response.c
修改前
static u_char ngx_http_error_tail[] = //第29行
"
"