zoukankan      html  css  js  c++  java
  • Nginx深度优化

    简介

    1.隐藏版本号
    2.修改Nginx用户与组
    3.配置Nginx网页缓存时间
    4.实现Nginx的日志切割
    5.配置Nginx实现连接超时
    6.更改进程数
    7.配置Nginx实现网页压缩功能
    8.配置Nginx实现防盗链
    9.FPM模块进行参数优化

    实验环境

    • 系统环境:CentOS7.4
    • 服务器IP地址:192.168.100.71
    • 客户端IP地址:192.168.100.72
    • yum挂载目录:/mnt/sr0
    • 相关源码包下载地址:百度云下载   密码:uhzm

    搭建步骤

    一、配置Nginx隐藏版本号

    在生产环境中,需要隐藏Nginx的版本号,以避免安全漏洞的泄漏,使×××者不能针对特定版本进行×××

    方法一:修改配置文件法

    1、修改主配置文件

    [root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf
    Nginx深度优化

    2、重启Nginx服务

    [root@Init5 ~]# nginx -t
    Nginx深度优化

    [root@Init5 ~]# service nginx restart #重启服务

    3、测试

    [root@Init5 ~]# curl -I http://192.168.100.103

    方法2:修改源码法

    1、安装相关工具包

    [root@Init5 ~]# yum -y install gcc gcc-c++ pcre-devel zlib-devel

    2、创建Nginx进程用户

    [root@Init5 ~]# useradd -M -s /sbin/nologin nginx

    3、解压Nginx

    [root@Init5 ~]# tar xvf nginx-1.6.0.tar.gz -C /usr/src/

    4、修改源码文件

    [root@Init5 ~]# cd /usr/src/nginx-1.6.0/src/core/
    [root@Init5 core]# vim nginx.h
    Nginx深度优化

    5、配置、编译及编译安装

    [root@Init5 core]# cd /usr/src/nginx-1.6.0/
    [root@Init5 nginx-1.6.0]# ./configure
    --prefix=/usr/local/nginx
    --user=nginx --group=nginx
    --with-http_stub_status_module

    参数解析:

    prefix #指定安装位置
    user=nginx #指定nginx系统用户
    group=nginx #指定组
    with-http_stub_status_module #指定统计模块

    [root@Init5 nginx-1.6.0]# make && make install#编译及编译安装

    6、优化路径

    [root@Init5 nginx-1.6.0]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

    7、编辑Nginx服务脚本

    [root@Init5 ~]# vim /etc/init.d/nginx

    添加以下脚本:

    #!/bin/bash
    # chkconfig: 35 99 20
    # description:Nginx Server Control Script
    PROG="/usr/local/sbin/nginx"
    PIDF="/usr/local/nginx/logs/nginx.pid"
    case "$1" in
    start)
    $PROG
    ;;
    stop)
    kill -s QUIT $(cat $PIDF)
    ;;
    restart)
    $0 stop
    $0 start
    ;;
    reload)
    kill -s HUP $(cat $PIDF)
    ;;
    *)
    echo "Usage: $0 (start|stop|restart|reload)"
    exit 1 #非正常退出
    esac
    exit 0 #正常退出

    [root@Init5 ~]# chmod +x /etc/init.d/nginx #赋予权限
    [root@Init5 ~]# chkconfig --add nginx #添加系统服务
    [root@Init5 ~]# service nginx start

    8、测试

    [root@Init5 ~]# curl -I http://192.168.100.103
    Nginx深度优化

    二、修改Nginx用户与组

    Nginx运行时进程需要有用户与组的支持,以实现对网站文件读取时进行访问控制,Nginx默认使用nobody用户账号与组账号,一般也要进行修改

    方法1:编译安装时指定

    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx …… 略

    方法2:修改配置文件

    1、修改主配置文件

    [root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf
    Nginx深度优化

    2、重启Nginx服务

    [root@Init5 ~]# service nginx restart

    3、测试

    [root@Init5 ~]# ps aux | grep nginx
    Nginx深度优化

    三、配置网页缓存时间

    当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,以避免重复请求,加快了访问速度,一般针对静态网页进行设置,对动态网页不用设置缓存时间

    1、编辑默认首页

    [root@Init5 ~]# cp qingzi.jpg /usr/local/nginx/html/ #将测试图片拷贝到站点目录下
    [root@Init5 ~]# cd /usr/local/nginx/html/
    [root@Init5 html]# vim index.html #编辑默认首页
    Nginx深度优化

    2、编辑主配置文件

    [root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf
    Nginx深度优化

    3、重启服务

    [root@Init5 ~]# service nginx restart

    4、测试

    Nginx深度优化

    四、实现Nginx的日志切割

    随着Nginx运行时间的增加,产生的日志也会增加,为了方便掌握Nginx的运行状态,需要时刻关注Nginx日志文件,而太大的日志文件对监控是一个大灾难。Nginx没有类似Apache的crolog日志分割处理的功能,但是,可以通过Nginx的信号控制功能的脚本来实现日志的自动切割,并将脚本加入到Linux的计划任务中,让脚本在每天的固定时间执行,便可实现日志分割功能

    1、编辑日志分割脚本

    [root@Init5 ~]# vim /opt/fenge.sh

    添加以下脚本信息:

    #!/bin/bash
    # Filename:fenge.sh
    d=$(date -d "-1 day" "+%Y%m%d") #获取当前时间的前一天,也就是往前推一天 
    logs_path="/var/log/nginx" #指定保存Ngixn日志路径 
    pid_path="/usr/local/nginx/logs/nginx.pid" #Nginx进程ID路径 
    [ -d $logs_path ] || mkdir -p $logs_path #判断定义的路径是否存在,不存在创建目录 
    mv /usr/local/nginx/logs/access.log $logs_path/bt.com-access.log-$d #将Nginx剪切至定义的目录下,并且用日期定义名称 
    kill -USR1 $(cat $pid_path) #平滑重载Nginx服务 
    find $logs_path -mtime +30 | xargs rm -rf #文件最后修改的时间超过30天,直接删除

    [root@Init5 ~]# chmod +x /opt/fenge.sh #添加执行权限

    2、测试脚本

    [root@Init5 ~]# date #查看当前时间
    Nginx深度优化

    [root@Init5 ~]# sh /opt/fenge.sh #执行脚本
    [root@Init5 ~]# ls /var/log/nginx/
    Nginx深度优化

    [root@Init5 ~]# date -s 07/17/18 #将时间往后推1天(7月17号)
    Nginx深度优化

    [root@Init5 ~]# ll /var/log/nginx/
    Nginx深度优化

    3、引入周期性计划任务

    [root@Init5 ~]# crontab -e

    30 1 * /opt/fenge.sh #每天凌晨01:30定期执行脚本自动进行

    五、配置Nginx实现连接超时

    在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间

    1、修改主配置文件

    [root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf
    Nginx深度优化

    2、重新启动Nginx服务

    [root@Init5 ~]# service nginx restart

    3、测试

    Nginx深度优化

    六、更改进程数

    在高并发场景,需要启动更多的nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞

    1、查看Nginx运行的个数

    [root@Init5 ~]# ps aux | grep 'nginx'
    Nginx深度优化

    2、查看物理CPU核数

    [root@Init5 ~]# cat /proc/cpuinfo | grep -c "physical"

    3、修改主配置文件

    [root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf
    Nginx深度优化

    4、重启服务

    [root@Init5 ~]# service nginx restart

    5、再次查看Nginx运行的个数

    Nginx深度优化

    七、配置Nginx实现网页压缩功能

    Nginx的ngx_http_gzip_module压缩模块(默认已经添加,不需要--with)提供了对文件内容压缩的功能,允许nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装,可在配置文件中加入相应的压缩功能参数对压缩性能进行优化

    1、修改主配置文件

    [root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf

    添加以下参数:

    gzip on:开启gzip #压缩输出
    zip_min_length 1k #用于设置允许压缩的页面最小字节数,低于1k不压缩
    gzip_buffers 4 16k #表示申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzp压缩结果
    gzip_http_version 1.0 #用于设置识别http协议版本,默认是1.1
    gzip_comp_level 2 #用来指定gzip压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理速度最慢,使用默认即可
    gzip_types text/plain #压缩类型,是就对哪些网页文档启用压缩功能,类型与类型之间用空格隔开,可以指定多个
    gzip_vary on #选项可以让前端的缓存服务器缓存经过gzip压缩的页面

    八、配置Nginx实现防盗链

    在企业网站服务中,一般都要配置防盗链功能以避免网站内容被非法盗用,造成经济损失。Nginx防盜链功能也非常强大。在默认情况下,只需要进行简单的配置,即可实现防盗链处理

    实验环境

    IP地址域名用途
    192.168.100.103 www.bt.com 源主机
    192.168.100.20 www.test.com 盗链网站

    1、源主机测试页面

    Nginx深度优化

    2、盗链网站盗用源主机图片

    [root@raid ~]# vim /usr/local/nginx/html/index.html #编辑默认首页
    Nginx深度优化

    3、访问测盗链网站测试页面

    Nginx深度优化

    4、源主机配置防盗链

    [root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf #编辑主配置文件
    Nginx深度优化

    [root@Init5 ~]# nginx -t #检测语法
    Nginx深度优化

    [root@Init5 ~]# service nginx restart #重启Nginx服务

    5、测试

    Nginx深度优化

    九、FPM模块进行参数优化

    Nginx的PHP解析功能实现如果是交由FPM处理的,为了提高PHP的处理速度,可对FPM模块进行参数的调整
    [root@Init5 etc]# vim php-fpm.conf

    pid = run/php-fpm.pid #确定pid文件位置
    pm = dynamic #动态方式
    pm.max_children=50 #最大启动进程数量是50个,相当于水桶,代表桶的容积
    pm.start_servers = 20 #启动时开启的进程数进程是20个
    pm.min_spare_servers = 5 #最小空闲进程数是5个,低于这个数,每秒钟会产生一个新的进程
    pm.max_spare_servers = 20 #最大空闲进程数是20个,客户不连接PHP,最多允许的空间进程数

    最后说一件重要的事,只怕有同学错过。云计算现在白菜价了,2018年各大云计算厂商竞相降价,云服务器低至300元/年。现在不管是学习linux系统,运行长时间工作的爬虫,上线个人App或小程序,搭建网站做个人站长,都是时候上云服务了,错过这一波可能你就掉队。这里整理了一份云计算优惠活动产品列表,点击拿走不谢!


    本文转自:http://blog.51cto.com/11905606/2162135

  • 相关阅读:
    js数组的用法以及数组根据下标(数值或字符)移除元素
    组件创建、组件注册方式
    vue.runtime.esm.js:593 [Vue warn]: Invalid prop: custom validator check failed for prop "value".报错解决
    uni-app 子组件如何调用父组件的方法
    wap2app(十)--wap2app 添加原生底部导航,添加原生标题栏,填坑
    wap2app(九)-- 使用mui.previewImage之后,页面a链接不能跳转
    wap2app(八)-- iphoneX 底部导航的兼容问题
    wap2app(七)-- 长按保存图片
    我的新书《Android App开发从入门到精通》终于出版啦
    Android微信登录、分享、支付
  • 原文地址:https://www.cnblogs.com/jebysun/p/9522029.html
Copyright © 2011-2022 走看看