Nginx优化与防盗链

Nginx服务优化

​ 在企业信息化应用环境中,服务器的安全性和响应速度需要根据实际情况进行相应参数的配置,以达到最优的用户体验。Nginx默认的安装参数只能提供最基本的服务,需要调整如网页缓存时间、连接超时、网页压缩等相应参数,才能发挥出服务器的最大作用

隐藏版本号
  • 在生产环境中,需要隐藏Nginx的版本号,以避免Nginx的版本,使攻击者不能针对特定版本进行攻击

  • 隐藏Nginx版本号有两种方式。

    1. 修改配置文件方式(修改版本号信息)

      将Nginx 主配置文件中的server_tokens选项值设置为off。如没有该配置项,加上即可。

      #进入主配置文件
      [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
      #增加下行
      server_tokens off;
      #重启服务
      [root@localhost nginx]# systemctl restart nginx
      
    2. 设置版本信息(修改版本号,修改服务器类型)

      Nginx源码文件nginx-1.12.0/src/core/nginx.h包含了版本信息,可以随意设置,然后重新编译安装,隐藏版本信息

      #进入解压缩后的nginx文件重新配置
      [root@localhost ~]# cd nginx-1.12.0
      [root@localhost nginx-1.12.0]# vim src/core/nginx.h 
      #define NGINX_VERSION      "10.12.0"
      #define NGINX_VER          "IIS/" NGINX_VERSION
      [root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module 
      [root@localhost nginx-1.12.0]# make && make install
      [root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf
      server_tokens on;
      #重启服务
      [root@localhost nginx]# systemctl restart nginx
      
修改用户和组
  • Nginx运行时进程需要有用户与组的支持,用以实现对网站文件读取时进行访问控制。主进程由root创建,子进程由指定的用户与组创建。

  • 修改Nginx用户与组的方法有两种,一种是在编译安装时指定用户与组,另一种是修改配置文件指定用户与组

    1. 指定用户与组的参数

      编译Nginx时指定用户与组,就是配置Nginx时,在./configure后指定用户与组的参数

      [root@localhost ~]# ./configure \
      --prefix=/usr/local/nginx \
      --user=nginx \     #指定用户名是nginx
      --group=nginx   	#指定组名是nginx
      
    2. 配置用户与组

      修改Nginx主配置文件nginx.conf中的user 指定用户与组

      [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
      user nginx nginx; 
      #通过ps命令查看
      [root@localhost ~]# ps aux | greo nginx
      
配置网页缓存时间

​ 当Nginx将网页数据返回给客户端时,可设置缓存时间,以便在日后进行相同的请求时直接返回,以避免重复请求,加快访问速度。

#缓存图片
[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf
location ~ \.(gif|jpg|png)$ {
        root html;
        expires 1d;
}
[root@localhost nginx]# systemctl restart nginx

图片

日志切割

​ 太大的日志文件不便于分析排查,所以要进行日志分割但Nginx并没有自带日志分割处理工具,但可以通过编写控制功能脚本来实现日志的自动切割,并将脚本加入到Linux的计划任务中,以实现自动日志切割。

日志切割实例
#日志切割
[root@localhost html]# cd /opt/
[root@localhost opt]# vim fenge.sh
#!/bin/bash
d=$(date -d "-1 day" +%Y%m%d)
logs_path="/var/log/nginx"
[ -d $logs_path ] ||  mkdir -p $logs_path
mv /usr/local/nginx/logs/access.log ${logs_path}/benet.access-$d.log
find $logs_path -mtime +30 | xargs rm -rf
[root@localhost ~]# crontab -e
30 1 * * * /root/fenge.sh
[root@localhost ~]# chmod +x /opt/fenge.sh 
设置连接超时

​ 为避免客户端长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间。

修改Nginx配置文件nginx.conf,设置keepalive_timeout超时时间

#超时
[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf
keepalive_timeout  65 180;
[root@localhost opt]# pkill -1 nginx
[root@localhost nginx]# systemctl restart nginx

Nginx深入优化

更改进程数
[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf
worker_processes  4;
worker_cpu_affinity 0001 0010 0100 1000;
[root@localhost nginx]# systemctl restart nginx
配置网页压缩
  • 网页压缩能节约网站的带宽,提升用户的访问体验

  • Nginx的ngx_http_gzip_module压缩模块提供了对文件内容压缩的功能,默认Nginx已经按照该模块,只需要在配置文件中加入相应的压缩功能参数对压缩性能进行优化即可。常用优化功能参数如下:

    参数描述
    gzip_min_length1k用于设置允许压缩的页面最小字节数
    gzip_buffers 4 16k表示申请4个单位为16k作为压缩结果的流缓存
    gzip_http_version 1.0用于识别http协议版本,默认是1.1
    gzip_comp_level 2用来指定gzip压缩比,1压缩比最小,处理速度最快;9压缩比最大船速速度快,单处理速度最慢,使用默认即可。
    gzip_types text/plain压缩类型,是对哪些网页文档启用压缩功能
    gzip_vary on选项可以让前端的缓存服务器经过gzip压缩的页面
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
gzip  on;
gzip_comp_level 2;
gzip_buffers 4 64k
gzip_types text/css text/xml image/png image/ipg;
[root@localhost ~]# systemctl restart nginx
配置防盗链

​ 在企业网站服务中,一般要配置防盗链功能,以避免网站内容被非法盗用,造成服务器资源被占用,避免不必要的浪费。

防盗链配置实例
#服务器1
[root@localhost ~]# hostnamectl set-hostname apache1
[root@localhost ~]# bash
#服务器2
[root@localhost ~]# hostnamectl set-hostname apache2
[root@localhost ~]# bash
#修改每个主机的hosts文件
192.168.10.102 www.benet.com
192.168.10.103 www.accp.com
#写带有图片的网页(原图网站)
将图片文logo.jpg件拷贝到nginx的网站根目录下并修改网页文件
[root@apache1 ~]# vim /usr/local/nginx/html/index.html
<html>
<body>
<h1>It work! </h1>
<img src="logo.jpg"/>
</body>
</html>
#用另一台apache服务器盗链(盗图网站)
#在 www.accp.com 服务器,修改 index.html 文件,加入盗取图片链接
[root@apache2 ~]# vim /var/www/html/index.html
<html>
<body>
<h1>dao lian </h1>
<img src="http://www.benet.com/logo.jpg" />
</body>
</html>
#更改主服务器配置使其能够防盗
[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf
location ~ \.(gif|jpg)$ {
root html;
expires 1d;
valid_referers *.benet.com benet.com;
if ($invalid_referer) {
rewrite ^/ http://www.benet.com/error.png;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值