Nginx深刻优化

Nginx深刻优化

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器, 轻量级、高并发的web服务器。
在实际的生产环境中,咱们仍然不可能直接使用默认配置的Nginx来充当服务器。毕竟,为了更充分合理地利用Nginx服务器,咱们都应该根 据本身的实际须要对nginx的默认配置做出一些必要的调整。javascript

优化:隐藏版本号 、修改用户与组 、 网页缓存时间、 日志切割 、 链接超时 、更改进程数 、网页压缩、 防盗链 、FPM参数优化php

  • 隐藏版本号

  • 隐藏版本能够减小被攻JI的风险,保护服务器安全运行。css

    # curl -I http://192.168.200.131/     //查看web信息 能够看到nginx版本号

    Nginx深刻优化

# vim /usr/local/nginx/conf/nginx.conf
    http {
            include       mime.types;
            default_type  application/octet-stream;
            server_tokens off;         //添加该行
            ...
             }
    # systemctl stop nginx
    # systemctl start nginx    //重启服务
    # curl -I http://192.168.200.131/

Nginx深刻优化

  • 修改用户与组

Nginx运行时进程须要有用户和组的支持,用以实现对网站文件读取时进行访问控制。主进程由root建立,子进程由指定的用户与组建立,默认为nobody。html

# vim /usr/local/nginx/conf/nginx.conf
    user  nginx nginx;   //修改
# systemclt restart nginx
# ps aux | grep nginx    //查看nginx进程信息(主进程root用户,子进程nginx用户)

Nginx深刻优化

  • 缓存时间

    当Nginx将网页数据放回给客户端后,能够设置缓存时间,以便往后进行重复请求访问,以加快访问速度、同时减轻服务器压力,通常对静态资源进行设置,对动态网页不要设置缓存时间。java

    # vim /usr/local/nginx/conf/nginx.conf
    ***server里面添 :缓存为1天***
    location ~\.(gif|jpg|jepg|png|bmp|ico)$ {
                            root html;
                            expires 1d;
                    }
    # systemclt restart nginx

Nginx深刻优化


  • 日志切割

    # vim /opt/fenge.sh  //编写日志切割脚本

    #!/bin/bash
    #Filename:fenge.sh
    d=$(date -d "-1 day" "+%Y%m%d")   #显示一天前的时间
    logs_path="/var/log/nginx"
    pid_path="/usr/local/nginx/logs/nginx.pid"
    [ -d $logs_path ] || mkdir -p $logs_path
    mv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$d
    kill -USR1 $(cat $pid_path)
    find $logs_path -mtime +30 | xargs rm -rfnginx

    # chmod +x fenge.sh
    # ./fenge.sh
    # crontab -e    //设置成周期性计划任务
    0 1 * * * /opt/fenge.sh     //天天凌晨1点执行


  • 链接超时

通常网站中,为了不同一个客户长时间占用链接,形成资源浪费,可设置相应的链接超时参数,实现对链接访问时间的控制。web

# vim /usr/local/nginx/conf/nginx.conf
    http {
            ...
            keepalive_timeout  65 180;      //设置超时180秒
            client_header_timeout 80;
            client_body_timeout 80;
            ...
             }

keepalive_timeout 65 180;
第一个参数:指定了与客户端的keep-alive链接超时时间;值为0会禁用keep-alive客户端链接;
第二个参数:可选、在响应的header域中设置一个值“Keep-Alive: timeout=time”;
client_header_timeout 80;
指定等待客户端发送请求头的超时时间
client_body_timeout 80;
指定请求体读超时时间vim

# systemclt restart nginx   //重启服务
  • 更改进程数

在高并发环境中,须要启动更多的Nginx进程以保证快速响应,用以处理用户的请求,避免形成阻塞。缓存

# cat /proc/cpuinfo | grep -c "physical"   //cpu核数
    # vim /usr/local/nginx/conf/nginx.conf
    worker_processes  4;   //修改成核数相同或者2倍
    worker_cpu_affinity 0001 0010 0100 1000;    //设置每一个进程由不一样cpu处理
    # systemclt restart nginx   //重启服务
    # ps aux | grep nginx   //查看进程数
  • 网页压缩

    Nginx服务器将输出内容压缩后进行传输,以节约网站的带宽,提高用户的访问体验,默认已经安装了该模块。安全

    # vim /usr/local/nginx/conf/nginx.conf
            gzip  on;
            gzip_buffers 4 64k;
            gzip_http_version 1.1;
            gzip_comp_level 2;
            gzip_min_length 1k;
            gzip_vary on;
            gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss text/jpg text/png;
    # systemclt restart nginx   //重启服务
    # curl -I  -H "Accept-Encoding: gzip, deflate" 192.168.200.131/   //请求自定义的头部信息
  • fpm参数优化

Nginx的PHP解析功能实现是由FPM处理的,为了提升PHP的处理速度,可对FPM模块进行参数的调整。
1:安装带有FPM模块的PHP环境;
2:FPM进程有两种启动方式,由pm参数指定,分别是static和dynamic,前者将产生固定数据的FPM进程,后者将以动态的方式产生FPM进程;

# vi php-fpm.conf 
    pid = run/php-fpm.pid
    pm = dynamic
    pm.max_children=20
    pm.start_servers = 5
    pm.min_spare_servers = 2
    pm.max_spare_servers = 8
  • 防盗链、

 在网站中,通常都要配置防盗链功能,以免网站内容被非法盗用,形成经济损失,也避免了流量的浪费。

# vim /usr/local/nginx/conf/nginx.conf
 location ~*\.(jpg|gif|swf)$ {
                        valid_referers none blocked *.benet.com benet.com;
                        if ( $invalid_referer ) {
                             rewrite ^/ http://www.benet.com/error.png;
                        }
                }
//匹配jpg、gif、swf 时,返回error.png       (error.png  放在站点目录)

Nginx深刻优化

# systemclt restart nginx   //重启服务
相关文章
相关标签/搜索