Nginx服务--优化

一 缓存优化

  • 手工编译安装Nginx服务 
解压缩包
tar zxvf nginx-1.12.2.tar.gz -C /opt

创建用户
useradd -M -s /sbin/nologin nginx

安装环境依赖包
yum install gcc gcc-c++ pcre pcre-devel zlib-devel -y

配置
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

创建软连接
ln -s /usr/local/nginx/sbin/* /usr/local/sbin

便于服务管理
vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: - 99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx/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);;
 *)
        exit 1
esac
exit 0

#添加执行权限
chmod +x /etc/init.d/nginx

#添加为系统服务
chkconfig --add nginx 

启动服务
service nginx start
检查服务
netstat -ntap | grep nginx
  • 修改主配置文件
[root@localhost nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf
 76         location ~\.(gif|jpeg|jpg|png|ico|bmp)$ {
 77             root html;
 78             expires 1d;   //缓存一天
 79         }
  • 修改nginx服务主页,添加一张图片

<img src="a.jip"/>
  • 关闭防火墙,开启服务,验证缓存
[root@localhost nginx-1.12.2]# systemctl stop firewalld.service 
[root@localhost nginx-1.12.2]# setenforce 0
[root@localhost nginx-1.12.2]# service nginx start

验证

二 压缩优化

  • 修改主配置文件
[root@localhost mnt]# vim /usr/local/nginx/conf/nginx.conf

gzip  on;                     //开启gzip压缩功能,添加以下内容
    gzip_min_length 1k;       //压缩阈值
    gzip_buffers 4 16k;       //buffer 大小为4个16k缓冲区大小
    gzip_http_version 1.1;    //压缩版本
    gzip_comp_level 6;        //压缩比率,最小为1,最大为9
    gzip_types text/plain application/x-javascript text/css image/jpg image/jpeg image/png image/gif application/xml text/javascript application/x-httpd-php application/javascript application/json;             //支持的压缩格式
    gzip_disable "MSIE [1-6]\.";  //配置禁用gzip条件,支持正则,表示ie6以下不启用gzip
    gzip_vary on;              //选择支持very header 可以让前段的缓存服务器经过gzip压缩的页面
  • 修改站点目录文件,插入一张图片

[root@localhost mnt]# vim /usr/local/nginx/html/index.html 
<img src="lol.jpg"/>

[root@localhost mnt]# cd /usr/local/nginx/html/
[root@localhost html]# ls
50x.html  index.html  lol.jpg
  • 关闭防火墙,开启服务,验证压缩功能
[root@localhost html]# systemctl stop firewalld.service
[root@localhost html]# setenforce 0
[root@localhost html]# service nginx start

验证:

三 隐藏版本

  • 为做隐藏版本时
[root@localhost html]# curl -I http://192.168.179.181/
HTTP/1.1 200 OK
Server: nginx/1.12.2                  //版本号
Date: Mon, 23 Dec 2019 10:50:16 GMT
Content-Type: text/html
Content-Length: 633
Last-Modified: Mon, 23 Dec 2019 10:36:21 GMT
Connection: keep-alive
ETag: "5e0098a5-279"
Accept-Ranges: bytes
  • 修改主配置文件,开启隐藏版本功能
[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens off;                        //添加此内容
  • 重启服务,验证版本号是否被隐藏


[root@localhost html]# curl -I http://192.168.179.181/
HTTP/1.1 200 OK
Server: nginx                        //隐藏此版本号
Date: Mon, 23 Dec 2019 10:55:18 GMT
Content-Type: text/html
Content-Length: 633
Last-Modified: Mon, 23 Dec 2019 10:36:21 GMT
Connection: keep-alive
ETag: "5e0098a5-279"
Accept-Ranges: bytes

四 服务的超时时间设置

  • 修改主配置文件,设置服务器超时时间
[root@localhost core]# vim /usr/local/nginx/conf/nginx.conf
keepalive_timeout  65 180;     //65秒为服务超时时间,180秒为客服端超时时间
    client_header_timeout 80;  //请求header超时时间设置
    client_body_timeout 80;    //请求body超时时间设置

五 日志分割

  • 创建日志分隔脚本文件

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"  //指向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 -rf  //30天之前的日志文件删除
  • 执行脚本,查看是否生成昨天的日志文件
[root@localhost opt]# ./fenge.sh 
[root@localhost opt]# cd /var/log/nginx/
[root@localhost nginx]# ls
test.com-access.log-20191222
[root@localhost nginx]#
  • 使用周期机会任务可以每天执行一次该脚本
[root@localhost nginx]# crontab -e
0 0 1 * * source /opt/fenge.sh
发布了78 篇原创文章 · 获赞 5 · 访问量 2591

猜你喜欢

转载自blog.csdn.net/qq397750142/article/details/103669009