首页 > 代码库 > 实战Nginx_取代Apache的高性能Web服务器
实战Nginx_取代Apache的高性能Web服务器
nginx的配置文件详解
worker_processes 24;
#指定工作衍生进程数,(一般等于CPU的总核数或者总核数的两倍,例如两个4核CPU,总核数为8)
#指定错误日志的存放路径和错误日志级别:[debug|info|notice|warn|error|crit]
worker_rlimit_nofile 51200#指定文件描述符数量
event{ use epoll}#linux 下默认的I/O网络模型,默认采用的是epoll模型。
worker_connections 65535;#允许的连接数
client_max_body_size 8m#设置客户端能够上传的文件的大小
#开启gzip压缩功能
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
#写个判断机制
if ($request_uri ~* ^.*\.svn.*$) {
return 404;
}
if ($request_filename !~ (/index.php/jsapi|/fonts|/javascript) ) {
rewrite ^/(.*)$ /index.php/user/$1 last;
break;
}
#域名重定向链接
server {
listen 80;
server_name ftchinese.com;
rewrite ^/(.*) http://www.ftchinese.com/$1 permanent;
}
#对于每一条日志记录,日志文件都将先打开文件,再写入日志记录,然后马上关闭,为了提高包含变量的日志文件存放路径的性能,需用open_log_file_cache指令设置经常被使用的日志文件描述符缓存。
open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time] | off 该指令默认是禁止的
open_log_file_cache off
lnmp环境的配置和优化:
提高PHP(FastCGI),什么是FastCGI呢?
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获取较高的性能。总所周知,CGI解释器的反复加载是CGI
性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理调度,则可以提供良好的性能、伸缩性、Fail-Over特性等。
FastCGI的工作原理是:
(1)、FastCGI进程管理自身初始化,启动多个CGI解释器进程(多个php-cgi进程)并等待来自Web Server的链接。在本文中,采用PHP-FPM进程管理器启动多个php-cgi FastCGI进程。启动php-cgi FastCGI进程时,可以配置以TCP和UNIX套接字两种方式启动。
(2)、当客户端请求到达Web服务器时,web服务器将请求采用TCP协议或者UNIX套接字方式转发到FastCGI主进程,FastCGI主进程选择并连接到一个CGI解释器(子进程)。web服务器将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
(3)、FastCGI进程完成处理后将标准输出和错误信息从同一连接返回web服务器。当FastCGI子进程关闭连接时,请求便告知处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器的下一个连接。而在一般的普通CGI模式中,php-cgi在此时已经退出了。
所以可以想象普通的CGI模式到底有多慢。每一个web请求PHP都必须重新解析php.ini、重新载入全部扩展并重新初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外好处是:持续数据库连接可以工作。
实战Nginx_取代Apache的高性能Web服务器