Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发.
Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配 Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。
nginx做为HTTP服务器,有以下几项基本特性:
ab -n 10 -c 10 http://opslinux.com/
#-n表示发送多少个请求,
#-c表示一次发送多少个(实际上就是把-n分批发送)
#后面跟地址,注意后的斜杠。
返回信息如下(红色部分为我的注释):
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, [http://www.zeustech.net/](http://www.zeustech.net/)
Copyright 2006 The Apache Software Foundation, [http://www.apache.org/](http://www.apache.org/)
Benchmarking http://www.yi1.com.cm/ (be patient)…..done
Server Software: Apache/2.2.4
Server Hostname: [http://opslinux.com/](http://opslinux.com/)
Server Port: 80
Document Path: /
Document Length: 31848 bytes
Concurrency Level: 10
Time taken for tests: 1.722254 seconds/*测试持续时间*/
Complete requests: 10/*完成请求数量*/
Failed requests: 0/*失败请求数量*/
Write errors: 0
Total transferred: 323490 bytes/*总流量*/
HTML transferred: 318480 bytes/*HTML传输量*/
Requests per second: 5.81 [#/sec] (mean)/*每秒事务数*/
Time per request: 1722.254 [ms] (mean)/*平均响应时间*/
Time per request: 172.225 [ms] (mean, across all concurrent requests)/*每个请求响应时间(平均)*/
Transfer rate: 182.90 [Kbytes/sec] received/*传输效率*/
Connection Times (ms)
min mean[+/-sd] median max
Connect: 165 166 1.2 167 168
Processing: 1300 1418 91.5 1427 1554
Waiting: 803 925 92.9 929 1064
Total: 1465 1585 92.2 1595 1721
Percentage of the requests served within a certain time (ms)
50% 1595/*50%的请求响应时间小于1595*/
66% 1620/*66%的请求响应时间小于1620*/
75% 1668
80% 1706
90% 1721
95% 1721
98% 1721
99% 1721
100% 1721 (longest request)/*最长响应时间1721*/
在编译Nginx时,默认以debug模式进行,而在debug模式下会插入很多跟踪和ASSERT之类的信息,编译完成后,一个Nginx要有好几兆字节。在编译前取消Nginx的debug模式,编译完成后Nginx只有几百千字节,因此可以在编译之前,修改相关源码,取消debug模式,具体方法如下: 在Nginx源码文件被解压后,找到源码目录下的auto/cc/gcc文件,在其中找到如下几行:
# debug
# CFLAGS=”$CFLAGS -g” //注释掉或删除
在编译Nginx时,默认的GCC编译参数是“-O”,要优化GCC编译,可以使用以下两个参数:
--with-cc-opt='-O3' \
--with-cpu-opt=CPU #为特定的 CPU 编译,有效的值包括:pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64
要确定CPU类型,可以通过如下命令:
cat /proc/cpuinfo | grep "model name"
在nginx配置文件的http标签内加入“server_tokens off; ”参数,也可以放大server标签和location标签中或者在源代码中更改
src/core/nginx.h
#define NGINX_VERSION "1.6.2" // 修改为想要的版本号如2.4.3
#define NGINX_VER "nginx/" 改为 Apache
src/http/ngx_http_header_filter_module.c
static char ngx_http_server_string[] ="Server:nginx" //改为apache
src/http/ngx_http_special_response.c
static u_char ngx_http_error_full_tail[] =
"
" NGINX_VER "" CRLF
"
" CRLF "