基于CentOS7上的nginx系统优化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于CentOS7上的nginx系统优化相关的知识,希望对你有一定的参考价值。

基于CentOS7上的nginx系统优化

隐藏版本信息

首先在CentOS7上安装好nginx服务之后,可以查看当前的nginx版本信息:

[[email protected] init.d]# curl -I http://192.168.234.174        //查看当前版本信息
HTTP/1.1 200 OK
Server: nginx/1.12.0      //当前的nginx版本信息
Date: Sat, 30 Jun 2018 06:23:15 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Sat, 30 Jun 2018 06:17:15 GMT
Connection: keep-alive
ETag: "5b37206b-264"
Accept-Ranges: bytes

为了避免版本信息泄露,从而导致不必要的麻烦,下面介绍两种隐藏版本信息的方法:

  • 基于已经安装好nginx服务的方法

修改nginx的主配置文件

[[email protected] init.d]# vim /usr/local/nginx/conf/nginx.conf
.....  省略
http {
    include       mime.types;
    default_type  application/octet-stream;
     server_tokens off;    //添加关闭版本显示

重新加载nginx的配置,并且再次查看版本信息

[[email protected] init.d]# service nginx reload    //重新加载nginx的配置文件
[[email protected] init.d]# curl -I http://192.168.234.174
HTTP/1.1 200 OK
Server: nginx      //这里可以看到当前的版本信息已经被隐藏起来了
Date: Sat, 30 Jun 2018 06:35:14 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Sat, 30 Jun 2018 06:17:15 GMT
Connection: keep-alive
ETag: "5b37206b-264"
Accept-Ranges: bytes
  • 基于nginx服务尚未安装的方法

    首先修改nginx的源代码,使别人误认为我们使用的是别的版本

[[email protected] init.d]# vim /opt/nginx-1.12.0/src/core/nginx.h    //修改源代码包

... ...省略
#define nginx_version      1012000
#define NGINX_VERSION      "1.12.0"  //修改为1.1.1

然后进行编译安装

[[email protected] init.d]# cd /opt/nginx-1.12.0/
[[email protected] nginx-1.12.0]# ./configure  
> --prefix=/usr/local/nginx > --user=nginx > --group=nginx > --with-http_stub_status_module        //编译安装

[[email protected] nginx-1.12.0]# make && make install

[[email protected] conf]# vim nginx.conf

http {
    include       mime.types;
    default_type  application/octet-stream;
        server_tokens on;     //开启显示版本信息

[[email protected] conf]# service nginx stop
[[email protected] conf]# service nginx start     //重新启动nginx服务
[[email protected] conf]# curl -I http://192.168.234.174
HTTP/1.1 200 OK
Server: nginx/1.1.1      //可以看到nginx的版本信息就被篡改了
Date: Sat, 30 Jun 2018 07:03:56 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Sat, 30 Jun 2018 06:17:15 GMT
Connection: keep-alive
ETag: "5b37206b-264"
Accept-Ranges: bytes

修改用户和组

[[email protected] conf]# vim /usr/local/nginx/conf/nginx.conf

#user  nobody;    //nobody修改为nginx 
nginx;

修改缓存时间

[[email protected] conf]# vim /usr/local/nginx/conf/nginx.conf
... ... 省略
 location / {
            root   html;
            index  index.html index.htm;
        }      //在下面添加
        location ~.(gif|jpg|jepg|png|bmp|ico)$ {
            root html;
            expires 1d;
        }

[[email protected] conf]# cd /usr/local/nginx/html/
[[email protected] html]# cp /abc/Apache/ai.jpg /usr/local/nginx/html/   //复制一张图片到html站点的目录下

[[email protected] html]# service nginx stop
[[email protected] html]# service nginx start    //重启nginx服务

然后此时使用一台安装了fiddler工具的win7客户机去访问nginx服务器

技术分享图片

技术分享图片

然后就可以看到这里图片的缓存时间已经被修改为一天了

日志分割

[[email protected] ~]# 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 -rf          #将30天之前的日志文件删除

[[email protected] opt]# chmod +x fenge.sh     //给与日志分割脚本一个执行权限
[[email protected] opt]# ./fenge.sh     //执行脚本
[[email protected] opt]# cd /var/log/nginx/   //查看nginx的日志文件
[[email protected] nginx]# ls
test.com-access.log-20180629      //这里就会产生一个前一天的日志文件

这里还可以添加为周期性计划任务

[[email protected] nginx]# crontab -e
0 1 * * * /opt/fenge.sh   //这样日志分割任务就会周期性的生成,就不需要我们每天都手动执行一遍脚本了

连接超时

[[email protected] nginx]# vim /usr/local/nginx/conf/nginx.conf
... ... 省略
    #keepalive_timeout  0;
    keepalive_timeout  65;   //删除此行,并在下面添加

    keepalive_timeout  65 180;
    client_header_timeout 80;
    client_body_timeout 80;

[[email protected] nginx]# nginx -t   //检查语法

[[email protected] nginx]# service nginx stop 
[[email protected] nginx]# service nginx start   //重启nginxfuwu

然后此时同样使用装有一台安装了fiddler工具的win7客户机去访问nginx服务器

技术分享图片

技术分享图片

防盗链

首先在进行防盗链配置时,我们要先准备两台win7客户机(网卡模式是NAT,IP地址自动获取),一台(win7)进行盗链操作,另一台(win7-1)做访问端

开始进行盗用链接配置,首先盗链端(win7)开启IIS服务,并且写入一个首页内容

<html>
<head></head>
 <body>
   <h1>this is test!!!</h1>    //首页内容
   <img src="http://www.benet.com/game.jpg">   //进行盗链的网站和图片
</body>
</html>

然后在CentOS7上安装DNS服务,并且修改配置

[[email protected] nginx]# yum install bind -y

[[email protected] nginx]# vim /etc/named.conf   //修改主配置文件

listen-on port 53 { 127.0.0.1; };    //127.0.0.1修改为any

allow-query     { localhost; };    //localhost修改为any

[[email protected] nginx]# vim /etc/named.rfc1912.zones   //修改区域配置文件
//添加下面的配置
zone "benet.com" IN {
        type master;
        file "benet.com.zone";
        allow-update { none; };
};

zone "test.com" IN {
        type master;
        file "test.com.zone";
        allow-update { none; };
};

[[email protected] nginx]# cd /var/named/
[[email protected] named]# cp -p named.localhost benet.com.zone
[[email protected] named]# vim benet.com.zone  //修改区域数据库文件
删除末行,添加
www  IN A 192.168.234.174  //解析指向nginx服务器的IP

[[email protected] named]# cp -p benet.com.zone test.com.zone
[[email protected] named]# vim test.com.zone
修改末行的www 后的解析地址,指向盗链服务器的IP,即
www  IN A  192.168.234.180 //这里是win7的IP

这里盗链的操作就完成了,我们可以看下效果

访问www.test.com

技术分享图片

访问www.benet.com

技术分享图片

接下来配置防盗链配置

[[email protected] html]# 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;
            }
        }

[[email protected] named]# cd /usr/local/nginx/html/
[[email protected] html]# cp /abc/LNMP/error.png ./    //添加一张重定向的图片
[[email protected] html]# service nginx stop
[[email protected] html]# service nginx start    //重启nginx服务

防盗链操作完成后,我们在来使用win7-1客户机访问查看效果(访问前先清空缓存):

访问www.test.com

技术分享图片

访问www.benet.com

技术分享图片

这样防盗链就完成了。

以上就是CentOS7上nginx的所有优化配置了,请各位看官多多点评与点赞!!!

以上是关于基于CentOS7上的nginx系统优化的主要内容,如果未能解决你的问题,请参考以下文章

百晓生详解nginx(上)功能概述,常用功能模块的简介,在centos7上的安装及常用优化

纯干货CentOS7上基于nginx搭建tomcat9.0版本的负载均衡群集管理

[centos7][nginx][tshark] 基于 tshark 的页面流量统计

MogileFS + Nginx 实现基于CentOS7平台的分布式文件存储与访问

linux学习:Nginx--常见功能配置片段与优化-06

CentOS7.4—nginx应用之基于域名的虚拟主机