zcl_ccc 发表于 2018-11-8 08:12:58

基于CentOS7上的nginx系统优化

基于CentOS7上的nginx系统优化

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

# 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的主配置文件
  

# vim /usr/local/nginx/conf/nginx.conf  
.....省略
  
http {
  include       mime.types;
  default_typeapplication/octet-stream;
  server_tokens off;    //添加关闭版本显示
  

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

# service nginx>
# 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的源代码,使别人误认为我们使用的是别的版本

  

# vim /opt/nginx-1.12.0/src/core/nginx.h    //修改源代码包  

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

  然后进行编译安装
  

# cd /opt/nginx-1.12.0/  
# ./configure \
  
> --prefix=/usr/local/nginx \
  
> --user=nginx \
  
> --group=nginx \
  
> --with-http_stub_status_module      //编译安装
  

  
# make && make install
  

  
# vim nginx.conf
  

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

  
# service nginx stop
  
# service nginx start   //重新启动nginx服务
  
# 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
  

修改用户和组
  

# vim /usr/local/nginx/conf/nginx.conf  

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

修改缓存时间
  

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

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

  
# service nginx stop
  
# service nginx start    //重启nginx服务
  

  

  然后此时使用一台安装了fiddler工具的win7客户机去访问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 -rf          #将30天之前的日志文件删除
  

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

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

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

连接超时
  

# vim /usr/local/nginx/conf/nginx.conf  
... ... 省略
  #keepalive_timeout0;
  keepalive_timeout65;   //删除此行,并在下面添加
  

  keepalive_timeout65 180;
  client_header_timeout 80;
  client_body_timeout 80;
  

  
# nginx -t   //检查语法
  

  
# service nginx stop
  
# service nginx start   //重启nginxfuwu
  

  

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



防盗链
  首先在进行防盗链配置时,我们要先准备两台win7客户机(网卡模式是NAT,IP地址自动获取),一台(win7)进行盗链操作,另一台(win7-1)做访问端
  开始进行盗用链接配置,首先盗链端(win7)开启IIS服务,并且写入一个首页内容
  

  

  
  this is test!!!    //首页内容
     //进行盗链的网站和图片
  

  

  

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

# yum install bind -y  

  
# vim /etc/named.conf   //修改主配置文件
  

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

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

  
# 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; };
  
};
  

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

  
# cp -p benet.com.zone test.com.zone
  
# vim test.com.zone
  
修改末行的www 后的解析地址,指向盗链服务器的IP,即
  
wwwIN A192.168.234.180 //这里是win7的IP
  

  这里盗链的操作就完成了,我们可以看下效果
  访问www.test.com

  访问www.benet.com

  接下来配置防盗链配置
  

# 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;
  }
  }
  

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

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

  访问www.benet.com

  这样防盗链就完成了。
  以上就是CentOS7上nginx的所有优化配置了,请各位看官多多点评与点赞!!!


页: [1]
查看完整版本: 基于CentOS7上的nginx系统优化