Nginx服务优化与防盗链

一、隐藏版本号

在网页中我们通过F12+F5可以查看到版本号,或者使用Fiddler工具抓取数据包,查看Nginx版本,也可以在CentOS中使用命令curl  -I  http://192.168.10.23显示响应报文首部信息。

这十分的不好,容易被针对攻击。

1.1、方法一:修改配置文件方式

vim   /usr/local/nginx/conf/nginx.conf
在下http添加
server_tokens   off;
systemctl restart nginx.service
curl -I 192.168.88.79

注意:这个指标不治本,比如php探针,还是可以看到nginx具体版本信息

1.2、方法二:

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

重新编译一下
cd /opt/nginx-1.18.0/
可以用nginx  -V看到自己 prefix内容
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

make
cd objs/
cp nginx /usr/local/nginx/sbin/

systemctl restart nginx.service

curl -I 192.168.88.79

二、修改用户与组

vim/usr/local/nginx/conf/nginx.conf
第一行
user  nginx nginx;
取消注释,修改用户为 nginx, 组为nginx
ps aux|grep nginx
主进程由 root 创建,子进程由 nginx 创建

三、缓存时间

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

cd  /usr/local/nginx/html/

放入一张图片名为game.jpg

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

最后http://192.168.88.79/game.jpg
game.jpg ( 685×421)
http://192.168.88.79/game.jp

四、日志切割

vim /opt/fenge.sh

#!/bin/bash  
# Filename: fenge.sh  
# 前一天的时间  
day=$(date -d "-1 day" "+%Y%m%d")  # 注意date命令中的空格和引号  
  
logs_path="/var/log/nginx"  
#"/usr/local/nginx/logs/nginx.pid"。这个路径通常用于存储 Nginx 主进程的进程ID(PID)文件。
pid_path="/usr/local/nginx/logs/nginx.pid"  
  
# 日志文件目录  
[ -d "$logs_path" ] || mkdir -p "$logs_path"  # 增加了空格和引号以提高可读性和防止解析错误  
  
# 并重命名日志文件  
mv "/usr/local/nginx/logs/access.log" "${logs_path}/yc.com-access.log-$day"  # 增加了引号  
  
# 新日志文件  
kill -USR1 $(cat "$pid_path")  # 增加了引号  USR1是单独的nginx信号生成日志
  
# 30天之前的日志文件  
find "$logs_path" -type f -name "*.log" -mtime +30 -exec rm -rf {} \;  # 只删除.log文件,并增加了引号
chmod +x /opt/fenge.sh
/opt/fenge.sh
检查
cd /var/log/nginx;ll
ls /usr/local/nginx/logs/access.log
计划任务
crontab -e
0 1 * * * /opt/fenge.sh

五、连接超时

HTTP 有一个 KeepAlive 模式,它告诉 web 服务器在处理完一个请求后保持这个 TCP 连接的打开状态。若接收到来自同一客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。
KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。
vim /usr/local/nginx/conf/nginx.conf

 keepalive_timeout 指令设置了客户端与服务器之间保持连接的超时时间。

  • 第一个值(65秒)是告诉Nginx,在客户端与服务器之间没有任何数据传输的情况下,连接将在65秒后自动关闭。这是为了节省服务器资源,避免保持太多空闲连接。
  • 第二个值(180秒)是告诉Nginx,如果使用了HTTP Keep-Alive头部,那么连接的最大空闲时间可以延长至180秒。这适用于支持HTTP持久连接的客户端,它们可以在一次TCP连接中发送多个HTTP请求,从而减少建立新连接的开销。

client_header_timeout

client_header_timeout 指令设置了客户端发送请求头给服务器的超时时间。client_header_timeout 80; 表示如果Nginx在80秒内没有收到客户端请求头的完整部分,那么它将会关闭这个连接。这个设置有助于防止客户端因为网络问题或其他原因而无限期地占用服务器资源。

client_body_timeout 指令设置了客户端发送请求体(如POST请求的表单数据)给服务器的超时时间。

client_body_timeout 80; 表示如果Nginx在80秒内没有收到客户端请求体的完整部分,那么它将会关闭这个连接。这个设置同样有助于防止因为客户端问题而导致的服务器资源浪费。

    keepalive_timeout  65 180;
    client_header_timeout 80;
    client_body_timeout 80;

六、更改进程数

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

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

  • -c:这个选项告诉grep命令只输出匹配行的数量,而不是匹配行的内容。

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

ps aux|grep nginx

一个work

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

systemctl restart nginx

七、配置网页压缩

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

        gzip  on;
        gzip_min_length 1k;
        gzip_buffers 4 64k;
        gzip_http_version 1.1;
        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;

在文件页面配置

<imgsrc="game.jpg"/>

systemctl restart nginx

打开

 

八、配置防盗链

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

   location ~* \.(jpg|git|swf)$ {
        valid_referers none blocked *.yc.com yc.com;
        if ( $invalid_referer  ) {
        #return 403;
        rewrite ^/ http://www.yc.com/error.png;
        }
        }

注意png上面就不能png了

可以在另一台机器测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值