Nginx 的优化与防盗链设置

Nginx的优化

隐藏版本号

暴露版本号,攻击者就可以根据版本漏洞进行攻击。

查看版本号的方法:

curl -I http://192.168.110.60

网页访问F12查看源代码

隐藏版本号的方法

方法一、修改配置文件

添加关闭版本号

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

server_tokens off;

检查配置文件

nginx -t

重启服务

systemctl restart nginx

查看版本号

http://192.168.110.60

网页访问F12查看源代码

方法二、修改源码文件,重新编译安装

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

cd /opt/nginx-1.26.2/

nginx -V(显示 Nginx 的版本信息以及编译时包含的配置参数)

./configure 编译

编译安装

make -j 2 && make install

查看版本号

curl -I http://192.168.110.60

网页访问F12查看源代码

修改用户与组

nginx的默认用户是nobody,修改默认用户便于管理。

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

user nginx nginx;

systemctl restart nginx

ps aux | grep nginx

修改缓存时间

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

一般针对静态网页设置,对动态网页不设置缓存时间。

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

添加新的 location,以图片作为缓存对象,指定缓存时间为1天

location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {
            root html;
            expires 1d;
}

systemctl restart nginx

创建一个测试页面

<html>
<body>
<img src="river.png"/>
</body>
</html>

网页访问F12查看源代码

设置nginx日志切割

日志切割有力于发现故障时排障。

写一个日志切割的shell脚本

vim nginx_log.sh

#!/bin/bash

YESTERDAY=$(date -d "-1 day" "+%Y%m%d")
LOGPATH="/opt/log/nginx"
PIDPATH="/usr/local/nginx/logs/nginx.pid"


if [ !-d $L0GPATH ];then
mkdir -p $LOGPATH
fi


mv /usr/local/nginx/logs/access.log ${LOGPATH}/access.log-$YESTERDAY
mv /usr/local/nginx/logs/error.log ${LOGPATH}/error.log-$YESTERDAY


kill -USR1 $(cat $PIDPATH)


find $L0GPATH -mtime +90 -delete
 

chmod +x /opt/nginx_log.sh

./nginx_log.sh

查看运行结果

设置周期任务

crontab -e

0 1 * * * /opt/nginx_log.sh

设置连接超时

HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。

若接收到来自同一客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。

KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。

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

keepalive_timeout 60 50;       ----连接保持超时时间,服务端60s,客户端50s
keepalive_requests  100;       ----连接保持最大请求次数
client_header_timeout  15;     ----客户端向服务端发送一个完整的 request header 的超时时间。
client_body_timeout     15;     ----指定客户端与服务端建立连接后发送 request body 的超时时间。

nginx -t

systemctl restart nginx

网页访问F12查看源代码

更改进程数

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

查看cpu核数(默认为1)

cat /proc/cpuinfo | grep -c "physical id"

查看nginx主进程中包含几个子进程

ps aux | grep nginx

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

worker_processes  auto;(设置为CPU总核数)
worker_cpu_affinity 0001 0010 0100 1000;(设置每个进程由不同cpu处理)

nginx -t

systemctl restart nginx

查看修改

ps aux | grep nginx

配置网页压缩

ngx_http_gzip_module是Nginx提供对文件压缩功能的模块。

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

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

gzip on;                                ----取消注释,开启gzip压缩功能
gzip_min_length 1k;             ----最小压缩文件大小,小于设置值的文件将不会压缩
gzip_buffers 4 16k;               ----压缩缓冲区,这里设置以16k为单位,按照原始数据大小以16k为单位的4倍申请内存
gzip_http_version 1.1;          ----用于识别HTTP协议版本
gzip_comp_level 5;              ----压缩比率,压缩比例由低到高从1到9,默认为1,在生产环境中一般设置该参数的值在3~5之间,最好不要超过5
gzip_vary on;                        ----支持前端缓存服务器存储压缩页面
gzip_disable "MSIE [1-6]\.";  ----配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
gzip_types text/plain text/javascript text/css text/xml application/x-javascript application/xml application/x-httpd-php application/javascript application/json;    ----压缩类型,表示哪些网页文档启用压缩功能

实现网页图片的大小压缩

http_image_filter_module是Nginx提供的集成图片处理模块,可以用于实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息。

yum在线源安装gd-devel,http_image_filter_module模块需要依赖gd-devel的支持。

yum install -y gd-devel

重新配置,编译安装nginx

cd /opt/nginx-1.26.2/

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_image_filter_module

make && make install

编辑配置文件

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

gzip on;
gzip_types text/plain .... image/jpeg image/gif image/png;

location ~* \.(jpg|gif|png)$ {
image_filter resize 200 200;
}

nginx -t

systemctl restart nginx

网页访问F12查看源代码

Nginx的Gzip压缩功能虽然好用,但是下面两类文件资源不太建议启用此压缩功能。
1)图片/视频类型资源 原因:图片如jpg、png文件本身就会有压缩,所以就算开启gzip后,压缩前和压缩后大小没有多大区别,所以开启了反而会白白的浪费资源。
2)大文件资源 原因:会消耗大量的cpu资源,且不一定有明显的效果。

配置防盗链

源网站图片

盗链网站

访问盗链网站是图片是源网站的占用源网站的资源

设置防盗链

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


location ~* \.(jpg|gif|png)$ {
                valid_referers none blocked *.sunny60.com;
                if ( $invalid_referer ) {
                rewrite ^/ http://www.sunny.com/error.png;
             
        }
        }
 

nginx -t

systemctl restart nginx

网页访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值