nginx优化fpm优化

nginx 隐藏版本号

vim /usr/local/nginx/conf/nginx.conf 编辑主配置文件
http {
    include       mime.types;
    default_type  application/octet-stream; 下
    #添加 server_tokens off # 关闭版本号
  效果 : Server: nginx


curl -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 -rf

crontab -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个进程

上一篇:一、Python基础 7.列表(List)


下一篇:使用ADB命令写Android自动化测试脚本