当前位置: 首页 > news >正文

8月5日上课内容 nginx的优化和防盗链

全部都是面试题

nginx的优化和防盗链

重点就是优化:

每一个点都是面试题,非常重要,都是面试题

1、隐藏版本号(重点,一定要会)

备份 cp nginx.conf nginx.conf.bak.2023.0805

方法一:修改配置文件方式
vim /usr/local/nginx/conf/nginx.conf
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens off;                                #添加,关闭版本号
    ......
}

 systemctl restart nginx


curl -I http://192.168.233.61

这时候再来看一下,版本号就消失了

 

方法二:修改源码文件,重新编译安装
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 回到配置源码包的主目录,重新配置一下,再重新编译安装一下

装完之后清除一下内存缓存

配置完之后再把off改为on显示编辑的版本号

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

systemctl restart nginx


curl -I http://192.168.233.61

2、Nginx的日志分割(非常重要,一定要会)

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

分割日志
NGINX不自带日志分割系统,可以通过脚本实现


vim nginxlog.sh

#!/bin/bash

# 获取日期 date +%Y-%m-%d 表示用年 月 日的格式显示
d=$(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'

#定义nginx的pid文件
pid_file='/usr/local/nginx/run/nginx.pid'

 if [ ! -d "$dir" ]
then
    mkdir $dir
fi

# 移动日志并重命名文件
mv ${logs_file} ${dir}/access_${d}.log
mv ${logs_error} ${dir}/error_${d}.log

# 发送kill -USR1信号给Nginx的主进程号,让Nginx重新生成一个新的日志文件
kill -USR1 $(cat ${pid_file})

#日志文件清理,将30天前的日志进行清除
find $logs_path -mtime +30 -exec rm -rf {} \;

ls /var/log/nginx/      #日志按照前一天的日期命名,移动到指定路径完成分割的第一步需求

chmod 777 nginxlog.sh

 

 

http://www.lryc.cn/news/110907.html

相关文章:

  • 网络爬虫请求头中的Referer和User-Agent与代理IP的配合使用
  • RabbitMQ 生产者-消息丢失 之 场景分析
  • Hyper实现git bash在windows环境下多tab窗口显示
  • Matlab的信号频谱分析——FFT变换
  • 如何从 Android 设备恢复已删除的文件?
  • servlet生命周期和初始化参数传递
  • dvwa靶场通关(十一)
  • 【Spring】使用注解存储Bean对象
  • 怎么维护好自己的电脑
  • vscode中无法使用git解决方案
  • MybatisPlus-CRUD,不带条件构造器的常用方法
  • 软件测试面试【富途面经分享】
  • antd 库的 Table 组件中删除一个或多个选中的列表
  • 针对java程序员的了解细节操作系统与进程
  • 判定是否互为字符重排、回文排列
  • QT QTextCharFormat 说明和使用
  • 掌握Memory Profiler技巧:识别内存问题
  • Linux学习之正则表达式元字符和grep命令
  • 熟练掌握ChatGPT解决复杂问题——学会提问
  • JVM之类加载与字节码
  • 【博客688】如何实现keepalived vip监控与告警
  • [QT编程系列-39]:用户界面UI - 样式表QSS与样式文件快速入门
  • 机器学习和深度学习简述
  • diffusion model2 扩散模型的文本信息融合、交叉注意力机制、lora
  • 数据结构——二叉树
  • 架构训练营学习笔记:5-3接口高可用
  • 【笔记】湖仓一体架构演进与发展
  • 政务云建设与应用解决方案[42页PPT]
  • 20天突破英语四级高频词汇——第①天
  • 【网络基础实战之路】基于MGRE多点协议的实战详解