nginx和php-fpm安装好之后,默认配置运行是OK的,不过从长期运行考虑,必要的优化还是需要的。
gzip
gzip是一种通过压缩服务器传输内容,提高客户端响应体验的常见优化方式。gzip在nginx上默认是开启的,不过只针对html,需要我们对配置做一些调整才能对js/css等做压缩。以下是修改后的配置段:
gzip on; gzip_min_length 1k; gzip_comp_level 2; gzip_types text/plain text/javascript application/x-javascript text/css;
下面解释各配置项含义。
指令名 | 指令含义 | 指令默认值 |
---|---|---|
gzip | 是否启用gzip。我安装nginx之后配置中gzip默认就是on的,所以没修改 | off |
gzip_min_length | 需要压缩文件大小的阈值,超过此值才会压缩。理论上来说,值太小的话,压缩反而不合算。 | 20 |
gzip_comp_level | 压缩级别。值越大,压缩后文件越小,但是所需时间与CPU资源越多。 | 1 |
gzip_types | gzip针对的content-type,优化的重点,application/x-javascript针对wordpress动态生成的javascript,注意,text/html不用在这里声明,声明了反而会有警告…… | text/html |
启用gzip之后,服务器端响应会有类似gzip、deflate等关键字,而且响应内容长度减少了。具体检查方法理论上有很多,本人使用firebug对比查看前后响应大小。
expires
expires主要针对的是图片等不能压缩但是变动周期很长的静态内容。典型的如博客的题图。nginx上设置expires也很简单,相比gzip,设置expires时你只要知道一条指令就行了。具体配置段如下:
location ~ \.(gif|jpg|jpeg|png|bmp)$ { expires 15d; }
location后面是个简单的正则表达式,含有常见的几种图片扩展名。在遇到这些扩展名时,nginx执行expires命令,增加过期时间为15天之后的响应头。
基本的两个网站服务器的优化方法讲完了。如果你对nginx的指令有兴趣的话,nginx官方网站的指令集上有更详细的资料。
使用unix socket文件连接nginx和php-fpm
使用unix socket文件方式比纯socket方式性能稍微好一点。
顺便说一句,socket方式必须绑定127.0.0.1,否则被外部访问会很麻烦。当然,如果你觉得不放心的话,也可以像我一样切换到unix socket文件方式。
unix socket方式并不是没人用的古董,本地访问mysql貌似推荐用socket方式。
言归正传,修改地方有两个,一个是nginx的配置nginx.conf,另一个是php-fpm的配置php-fpm.conf,具体配置段如下:
# vi nginx.conf location ~ \.php$ { # fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
注意两个fastcgi_pass。
# vi php-fpm.conf ; The address on which to accept FastCGI requests. ; Valid syntaxes are: ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on ; a specific port; ; 'port' - to listen on a TCP socket to all addresses on a ; specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. ;listen = 127.0.0.1:9000 listen = /var/run/php-fpm.sock
注意最后一行。
修改完毕之后,用上一篇的init.d脚本重启nginx和php-fpm即可。
One response to “nginx和php-fpm简单优化”
[…] 各参数详细含义请参考这里。 […]