nginx优化

本文介绍了如何隐藏Web服务版本号以增强安全性,包括修改配置文件和源码编译。此外,还涉及修改Nginx用户和组、设置缓存时间、调整超时时间、增加进程数、开启GZIP压缩以及实现防盗链策略,以提高服务器的安全性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

隐藏版本号

由于某些人会根据网页服务的版本号了解这个版本的比较重要的漏洞,然后通过这些漏洞攻击服务器所以需要隐藏版本号。

隐藏版本号有两种方式:
1、在配置文件里把版本号开启变为关闭,然后重载服务
2、对源码文件进行修改,然后重新编译

没有隐藏版本号前可以看到使用的是什么web服务以及版本号
在这里插入图片描述

1、修改配置文件

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

http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens off;				#新添加这一段,表示关闭版本号
systemctl restart nginx

访问网页,可以发现只显示用什么web服务不显示版本号
在这里插入图片描述
虽然隐藏了版本号,但是使用了什么web服务任然能看出来,而nginx常用的版本就那么几个所以还是容易受到攻击,所以需要对源码进行修改然后编译。

2、修改源码并编译

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

#define nginx_version      1015009
#define NGINX_VERSION      "1.0.0"						#显示版本号
#define NGINX_VER          "看什么看/" NGINX_VERSION		#显示是什么服务

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

systemctl restart nginx

可以发现变成乱码了,因为./configure没设置中文字符集
在这里插入图片描述

修改用户和组

如果./configure时没有指定用户指定组,那么这个服务默认使用nobody用户,虽然nobody用户的权限较低,但是仍然有一定的隐患,可以通过在配置文件中修改用户和组以提升安全性

vim /usr/local/nginx/conf/nginx.conf
user  nginx nginx;						#配置文件第一行改一下属主属组
worker_processes  1;

chown nginx:nginx /usr/local/nginx

最后查看一下nginx服务的属主是否为nginx
在这里插入图片描述

设置缓存时间

设置缓存时间通常用于静态网页,为了减少服务器压力而设置。

vim /usr/local/nginx/conf/nginx.conf
location / {								
            root   html;
            index  index.html index.htm;
        }
        location ~ \.(gif|jpg|jepg|bmp|ico)$ {		#在文件中新添加这一段
            root   html;
            expires 1d;						#设置1天的缓存时间
        }

vim /usr/local/nginx/html/index.html		#在1415行添加
<h1>Welcome to nginx!</h1>
<img src="xxx.jpg"/>
然后再/usr/local/nginx/html目录下添加xxx.jpg图片
systemctl restart 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 -HUP $(cat $pid_path)				#-QUIT  结束进程 -HUP 平滑重启
find $logs_path -mtime +30 | xargs rm -rf

最后给文件可执行权限,然后执行,出现了这个日志文件
在这里插入图片描述

date -s 20210625			#修改系统时间
./rzfg.sh

再执行一次,发现多出一个日志文件
在这里插入图片描述

连接超时

vim /usr/local/nginx/conf/nginx.conf		#进入配置文件,在31行添加
keepalive_timeout  100;						#超时时间100s
client_header_timeout 100;					#请求头的超时时间100s
client_body_timeout 100;					#请求体的超时时间100s
systemctl restart nginx

之后当连接超过100s就会自动断开,再点开网页时会自动刷新一下

更改进程

增加进程数可以减少系统的消耗,提升了服务的速度

vim /usr/local/nginx/conf/nginx.conf			#进入配置文件
worker_processes  4;							#在开头添加
worker_cpu_affinity 0001 0010 0100 1000;

这里表示对4个cpu进行操作,每个cpu对应一个进程,1表示用这个cpu进行工作,0表示不启用这个cpu。

图片压缩

vim /usr/local/nginx/conf/nginx.conf	#在37行写入
gzip on;                  				#开启gzip压缩功能
     gzip_min_length 1k;     			#超过1k就进行压缩
     gzip_buffers 4 16k;     			#压缩的缓存大小为416k缓冲区大小
     gzip_http_version 1.1;  			#压缩版本
     gzip_comp_level 6;					#压缩比率,最小为1,处理速度快,传输速度慢,9最大压缩比,处理速度慢,传输速度快(建议5-6)
     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;						#支持前端缓存服务器存储压缩页面

重新访问网页,可以看到出现gzip压缩情况
在这里插入图片描述

盗链与防盗链

盗链

首先先设置盗链端,在另一个linux的ningx主页文件中设置

vim /usr/local/nginx/html/index.html
<h1>okey dokey!</h1>
<img src="http://192.168.214.215/xxx.jpg"/>			#图片指向要盗取的ip地址
重启服务后

访问盗链端可以看到被盗端的图片
在这里插入图片描述

防盗链

[root@localhost conf]# vim nginx.conf		#修改server端主机的nginx 配置文件

 location ~*\.(jpg|gif|swf)$ {				#对location (jpg那一端进行修改)
            valid_referers none blocked www.shiki.com;
            if ( $invalid_referer ) {
               rewrite ^/ http://www.shiki.com/error.png;	#注意一点,error图片的格式必须不在上面的匹配格式中,否则图片会加载不出来
            }
        }

valid_referers:设置信任的网站,即能引用相应图片的网站(白名单)
none:浏览器中 Referer为空的情况,就是直接在浏览器访问图片
blocked:referer不为空的情况,但是值被代理或防火墙删除了,这些值不以http://或者https://开头
后面的网址或者域名:referer中包含相关字符串的网址
if语句:如果链接的来源域名不在 valid_referers所列出的列表中, $invalid_referer为1,则执行后面的操作

重启服务,最后验证一下
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值