0


Web服务器群集:Nginx网页及安全优化

目录


一、理论

1.Nginx网页优化

(1)概述

在企业中,部署Nginx后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已不适用当今的互联网时代。

为了适应企业需求,就需要考虑如何提升Nginx的性能与稳定性,这就是Nginx优化的内容。

优化内容:

表1 优化内容
分类优化内容网页优化配置网页压缩功能配置网页缓存连接超时设置并发设置页面安全配置隐藏版本号日志分割日志分割防盗链配置防盗链
(2)网页压缩

① gzip介绍

配置Nginx的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器。

作用:

降低了网络传输的字节数,加快网页加载的速度;
节省流量,改善用户的浏览体验;
gzip与搜索引擎的抓取工具具有更好的关系。

vim /usr/local/nginx/conf/nginx.conf
http {
...... 
   gzip on;                            #取消注释,开启gzip压缩功能
   gzip_min_length 1k;              #最小压缩文件大小
   gzip_buffers 4 64k;              #压缩缓冲区,大小为4个64k缓冲区
   gzip_http_version 1.1;           #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
   gzip_comp_level 6;               #压缩比率
   gzip_vary on;                    #支持前端缓存服务器存储压缩页面
   gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;        #压缩类型,表示哪些网页文档启用压缩功能
...... 
}

② Nginx的压缩模块

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

(3)网页缓存

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

vim /usr/local/nginx/conf/nginx.conf
http {
......
    server {
    ...... 
        location / {
            root html;
            index index.html index.htm;
        }
        
        location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {         #加入新的 location,以图片作为缓存对象
            root html;
            expires 1d;                                    #指定缓存时间,1天
        }
......
    }
}

(4)连接超时设置

HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自同一客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。
KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。
在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间。可以修改配置文件 nginx.conf,设置 keepalive_timeout超时。

vim /usr/local/nginx/conf/nginx.conf
 http {
 ...... 
     keepalive_timeout 65 180;       //设置连接超时时间    
     client_header_timeout 80;
     client_body_timeout 80;
 ...... 
 }

(5)并发设置

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

① 查看cpu的核心数:

查看cpu的核心数,根据核心数来设置工作进程数
cat /proc/cpuinfo |grep processor|wc -l
cat /proc/cpuinfo |grep -c processor
cat /proc/cpuinfo | grep -c "physical id"

② 修改工作进程核心数:

修改工作进程核心数 
vim /usr/local/nginx/conf/nginx.conf
worker_processes  1;        #修改为与CPU核数相同
worker_cpu_affinity 01 10;  #设置每个进程由不同cpu处理,进程数配为4时0001 0010 0100 1000

2.Nginx安全优化

(1)防盗链

防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片,文件,视频等相关资源;

如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力;

作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用。

Nginx盗链的过程与apache一致,均是通过网页浏览,将网站图片重定向到自己的网站上。

vim /usr/local/nginx/conf/nginx.conf
http {
......
    server {
    ......
        location ~* \.(jpg|gif|swf)$ {
            valid_referers none blocked *.david.com jack.com;
            if ( $invalid_referer ) {
                rewrite ^/ http://www.david.com/error.png;
                #return 403;
            }
        }
    ......
    }
}

(2)隐藏版本信息

作用:一般情况下,软件的漏洞信息和特定的版本是相关的,因此,软件的版本号对攻击者来说是很有价值的,所以我们隐藏Nginx的版本号,减少受攻击风险,保护服务器安全运行

Nginx隐藏版本号的方法:
① 修改配置文件(隐藏版本号)

vim /usr/local/nginx/conf/nginx.conf
server_tokens off;
##若在http模块中加,为全局设置
##在server模块内加,为当前主机设置

② 修改源码法(修改版本号)

vim /opt/nginx-1.22.0/src/core/nginx.h
#define NGINX_VERSION "1.1.1"                     #修改版本号
#define NGINX_VER "IIS" NGINX_VERSION             #修改服务器类型

cd /opt/nginx-1.22.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install

vim /usr/local/nginx/conf/nginx.conf
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens on;
    ......
}

3.Nginx日志分割

Nginx与apache的不同之处,就是Nginx本身并未设计日志分割工具,所以需要运维人员进行脚本编写来实现日志分割。

日志分割脚本:

#!/bin/bash
day=$(date +%Y-%m-%d)
dir="/usr/local/nginx/logs/"
logs_file='/usr/local/nginx/logs/access.log'
logs_error='/usr/local/nginx/logs/error.log'
pid_file='/usr/local/nginx/logs/nginx.pid'
if [ ! -d $dir ]
   then mkdir $dir
   fi
mv ${logs_file} ${dir}/access${day}.log
mv ${logs_error} ${dir}/error${day}.log
kill -USR1 $(cat ${pid_file})
find $dir -mtime +30 -exec rm -rf {} \;

二、实验

1.网页压缩

(1)配置文件

9e0bb8081f9d4932a900c95340d12789.png

加入压缩功能参数

fe5d84f4de8f47878320c18081a2f91c.png

配置网页

3f4e81ebdc854efb9348c8a929fccb7f.png

4b3e879311c447a49320a42738fd9913.png

查看图片为已压缩

b73aa8f46e124339b0154f2c76d3aafb.png

2.网页缓存

(1)配置文件

286c49c6ecf34210983619337051418a.png

1191f0bfced74bac9330dc88564557f6.png

查看图片缓存失效时间为1天9584fcf5b5fb443289340fc3b976e59f.png

3.连接超时设置

(1)配置文件

ad61d4dc3a804a559cf1f6d32a8417cd.png

设置超时

8761b643593d48d5bdac4749a81f8d83.png

查看连接已设超时4f5961958aeb4807b5e779b6d25f2d0a.png

4.并发设置

(1)配置文件

97612f7be6624decaa297883ff783103.png

查看CPU内核数:

95c83d31849d4c0eaf8301e05e7b99c0.png

修改工作进程核心数:

c9d06f9da1794371980f24c5470e31a2.png

5.隐藏版本信息

(1)修改配置文件(隐藏版本号)

查询版本号

f6376566174143a6911abaa8501eaa90.png

配置文件关闭版本

0e0ce5d63b494fc095f874be2a3e1817.png

关闭版本号

a1906232d7c44562a79ba4e19d19e1ed.png

查询

82002c8a479b4de69fcbc2acbc9e7a7b.png

(2)修改源码法(修改版本号)

编辑文件

vim /opt/nginx-1.22.0/src/core/nginx.h

修改版本号及服务器类型

84ea9e6524c64645a810002cd61c5f0f.png

指定安装路径

5d3f53f9b9a94c08b095ce2c0440dd28.png

完成

926148d2ee3c4c949910441aba59b35c.png

编译安装20b2d825b8a5484186a5c27d357458af.png

启用版本

65b56b6818f14145b81766a05d0e2499.png

查看版本

46082bb9e701465e83582fd79e530187.png

6.脚本实现每月1号进行日志分割

(1)编写日志分割脚本

cd /opt
vim nginxlog.sh

0816c1a5a20c420d9f08ae54ffe0b98f.png

(2)赋权

2cde4a87f60d47cd9b19e33e05d0b136.png

(3)执行脚本进行测试

(4)查看日志

1b9e4f999f744a92bb05e800fb576692.png

(5)计划性任务

a9f8008ac2834d6e9c43a2968a8aeb90.png

7.防盗链

(1)web源主机(192.168.204.200)

配置文件

76e2f9ad6dff477eb513aaa7a96ae1a7.png

6d2ca8eb050e405996f6e804e27b5cd1.png

配置网页

bd8d3d323fc54c16ada36f2778e28614.png

c06fa8ac2ea2465d81f02198eae96eb3.png

配置主机与IP映射

2f80075085144cb28b8b8b670ea9c4d7.png

80d3d285d3044df2bf370fbd7f13e01d.png

(2)盗链网址主机(192.168.204.150)

配置文件

3fb1966b48c34f1abd6f80c8ef7f63d1.png

9d94ddd61d014b4ea9c556a57817f739.png

配置网页

4d04cb4551814a38a7c4dc05166490a5.png

da998cf3e86f4188901b73f9f0aaf728.png

5f1c911e6cc84578af4fee053a682335.png

(3)在web源主机查看浏览器

41232058fbc5498c9e2230aa9c0cedb8.png

(4)在盗图网站主机上进行浏览器验证

89d3c22a735c43afb392c89ac59004dd.png

三、总结

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

Nginx网页及安全优化常用方法为网页压缩、网页缓存、连接超时设置、并发设置、防盗链、日志分割和隐藏版本信息。


本文转载自: https://blog.csdn.net/cronaldo91/article/details/131349874
版权归原作者 cronaldo91 所有, 如有侵权,请联系我们删除。

“Web服务器群集:Nginx网页及安全优化”的评论:

还没有评论