本文主要是介绍nginx优化fpm优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
nginx 隐藏版本号
vim /usr/local/nginx/conf/nginx.conf 编辑主配置文件
http {include mime.types;default_type application/octet-stream; 下#添加 server_tokens off # 关闭版本号效果 : Server: nginxcurl -I 192.168.79.160 #可查看版本
HTTP/1.1 200 OK
Server: nginx
修改Nginx用户与组
编译安装时指定用户与组./configure \
–prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \修改配置文件指定用户与组
vim /usr/local/nginx/conf/nginx.conf
user nginx nginx; #第一排
配置Nginx网页缓存时间
当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度
一般针对静态网页设置,对动态网页不设置缓存时间
可在Windows客户端中使用fiddler查看网页缓存时间
vim /usr/local/nginx/conf/nginx.con
server {listen 80;server_name www.hs.com;location / {root /usr/local/nginx/html;index index.html index.php index.htm;}# ~ :区分大小写location ~ \.php$ { root /usr/local/nginx/html;index index.php;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi.conf;#这里是缓存一天 expires 1d;}
}
4、日志切割
(1)编写脚本,把日志文件移动到var/log/nginx/下,以当前时间为名称,用kill -USR1创建新日志文件/usr/local/nginx/logs/access.log,最后删除30天前的日志文件
#!/bin/bash
#nginx log fg
d=`date -d "-1 day" +%Y%m%d`
logspath="/var/log/nginx"
pidpath="/usr/local/nginx/logs/nginx.pid"
[ -d $logspatn ] || mkdir -p $logspatn
mv /usr/local/nginx/logs/access.log "$logspath/luobin.com-access-$d.log"
mv /usr/local/nginx/logs/error.log "$logspath/luobin.com-error-$d.log"
kill -USR1 $(cat $pidpath)
find $logspath -mtime +30 | xargs rm -rfcrontab -e
1 0 * * * /bin/bash fenge.sh
systemctl restart crond
systemctl enable crond
配置Nginx实现连接超时
在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间超时参数讲解Keepalive_timeout
设置连接保持超时时间,一般可只设置该参数,默认为75秒,可根据网站的情况设置,或者关闭,可在http段、server段、或者location段设置
Client_header_timeout
指定等待客户端发送请求头的超时时间
Client_body_timeout
设置请求体读超时时间
keepalive_timeout 65 180; //连接保持超时时间,65为服务端超时时间,180为客户端超时时间,单位秒client_header_timeout 80; //等待客户端发送请求头部的超时时间client_body_timeout 80; //请求体读超时时间
更改Nginx运行进程数
在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞
可以使用ps aux命令查看Nginx运行进程的个数worker_processes:设置进程数,一般设为CPU的个数或者核数,在高并发的情况下可设置为CPU个数或者核数的2倍
查看CPU核数:cat /proc/cpuinfo | grep -c physical
默认情况下,nginx的多个进程可能更多的跑在一个CPU上,通过设置worker_cpu_affinity 0001 0010 0011 0100使每个进程分别由不同CPU核心处理(双核:0101 1010;)root@lnmp conf]# ps aux |grep nginx
root 1771 0.0 0.0 20548 704 ? Ss 23:03 0:00 nginx: master process /usr/local/sbin/nginx
nginx 1773 0.0 0.0 22224 2488 ? S 23:03 0:00 nginx: worker process
nginx 1774 0.0 0.0 22224 2488 ? S 23:03 0:00 nginx: worker process
nginx 1775 0.0 0.0 22224 2488 ? S 23:03 0:00 nginx: worker process
nginx 1776 0.0 0.0 22224 2488 ? S 23:03 0:00 nginx: worker process
配置Nginx实现网页压缩功能
Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装可在配置文件中加入相应的压缩功能参数对压缩性能进行优化压缩模块:ngx_http_gzip_module,默认已安装压缩功能参数讲解gzip on:开启gzip压缩输出
gzip_min_length 1k:用于设置允许压缩的页面最小字节数
gzip_buffers 4 16k:表示申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果
zip_http_version 1.0:用于设置识别http协议版本,默认是1.1,目前大部分浏览器已经支持gzip解压,但处理最慢,也比较消耗服务器CPU资源
gzip_comp_level 2:用来指定gzip压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理速度最慢,使用默认即可
gzip_types text/plain:压缩类型,是就对哪些网页文档启用压缩功能
gzip_vary on:选项可以让前端的缓存服务器缓存经过gzip压缩的页面
server {listen 80;server_name www.hs.com;location / {root /usr/local/nginx/html;index index.html index.php index.htm;}location ~ \.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {valid_referers 192.168.79.160;if ($invalid_referer) {return 403;}}location ~ \.php$ {root /usr/local/nginx/html;index index.php;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi.conf;expires 1d;}}
FPM模块优化
对FPM模块进行参数优化
Nginx的PHP解析功能实现如果是交由FPM处理的,为了提高PHP的处理速度,可对FPM模块进行参数的调整
FPM模块参数调整,要根据服务器的内存与服务负载进行调整
启动fpm进程方式 有两种
static:将产生固定数量的fpm进程 static使用pm.max_children指定启动进程数
dynamic:将以动态的方式产生fpm进程 dynamic根据服务器内存与服务负载进行调整
通过pm参数指定
FPM优化参数讲解
Static的方式的参数
pm.max_children:指定启动的进程数量
Dynamic方式的参数pm.max_children:指定启动的进程数量最大的数量
pm.start_servers:动态方式下初始的fpm进程数量
pm.min_spare_servers:动态方式下最小的fpm空闭进程数
pm.max_spare_servers:动态方式下最大的fpm空闭进程数
动态方式因为会结束掉多余的进程,可以回收释放一些内存,所以推荐在内存较少的服务器或者VPS上使用。具体最大数量根据 内存/20M 得到。(比如说512M,建议pm.max_spare_servers设置为20(512*0.8/20)。至于pm.min_spare_servers,则建议根据服务器的负载情况来设置,比较合适的值在5~10之间。)
对于比较大内存的服务器来说,设置为静态的话会提高效率。(比如说2GB内存的服务器,可以设置为50;4GB内存可以设置为100等。)
# 编辑php-fpm配置文件
[root@lnmp logs]# cd /usr/local/php5/etc
[root@lnmp etc]# vim php-fpm.conf# 我的主机内存4g 因此这样配置
pm = dynamic # 动态模式
pm.max_children = 40 # 最多40个进程
pm.start_servers = 10 # php-fpm启动时候有10个进程
m.min_spare_servers = 5 # 最小空闲5个进程
pm.max_spare_servers = 10 # 最大空闲10个进程
这篇关于nginx优化fpm优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!