Nginx 优化与防盗链

文章目录

  • Nginx 优化与防盗链
  • 一、隐藏版本号
    • 1.1 修改配置文件方式
      • 1.1.1 操作步骤
    • 1.2 修改源码方式
      • 1.2.1 操作步骤
  • 二、修改用户与组
    • 2.1 操作步骤
  • 三、缓存时间
    • 3.1 操作步骤
  • 四、日志切割
    • 4.1 操作步骤
  • 五、连接超时
    • 5.1 操作步骤
  • 六、更改进程数
    • 6.1 操作步骤
  • 七、配置网页压缩
    • 7.1 操作步骤
  • 八、配置防盗链
    • 8.1 操作步骤

Nginx 优化与防盗链

在日常使用和管理 Nginx 服务器时,通过一些优化手段可以提高性能和安全性。本文将详细介绍几种常见的 Nginx 优化方法,包括隐藏版本号、修改用户与组、设置缓存时间、日志切割、配置连接超时、调整进程数、网页压缩以及防盗链配置。

一、隐藏版本号

Nginx 默认会在响应头中显示版本号,可能会为服务器带来安全隐患。通过以下两种方法可以隐藏或修改 Nginx 的版本号。

1.1 修改配置文件方式

此方法通过修改 Nginx 配置文件来隐藏版本号。

1.1.1 操作步骤

  1. 使用以下命令打开 Nginx 配置文件:
    vim /usr/local/nginx/conf/nginx.conf
    
  2. http 块中添加 server_tokens off; 来关闭版本号的显示:
    http {include       mime.types;default_type  application/octet-stream;server_tokens off;  # 关闭版本号显示...
    }
    
  3. 重启 Nginx 服务:
    systemctl restart nginx
    
  4. 通过命令检查版本号是否已隐藏:
    curl -I http://192.168.10.23
    

1.2 修改源码方式

此方法通过直接修改 Nginx 的源码文件来改变版本号和服务器类型。

1.2.1 操作步骤

  1. 编辑 Nginx 源码中的头文件:
    vim /opt/nginx-1.12.0/src/core/nginx.h
    
  2. 修改版本号和服务器类型:
    #define NGINX_VERSION "1.1.1"  # 修改版本号
    #define NGINX_VER "IIS" NGINX_VERSION  # 修改服务器类型
    
  3. 重新编译并安装 Nginx:
    cd /opt/nginx-1.12.0/
    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
    make && make install
    
  4. 修改配置文件中的 server_tokens 设置,并重启服务:
    vim /usr/local/nginx/conf/nginx.conf
    http {include       mime.types;default_type  application/octet-stream;server_tokens on;...
    }
    systemctl restart nginx
    
  5. 检查修改后的版本号:
    curl -I http://192.168.10.23
    

二、修改用户与组

为了提升 Nginx 的安全性,可以将 Nginx 运行的用户与组从默认的 root 修改为 nginx

2.1 操作步骤

  1. 编辑 Nginx 配置文件:
    vim /usr/local/nginx/conf/nginx.conf
    
  2. 将用户和组设置为 nginx
    user nginx nginx;  # 修改用户和组为 nginx
    
  3. 重启 Nginx 服务:
    systemctl restart nginx
    
  4. 通过命令检查主进程和子进程的用户是否已修改:
    ps aux | grep nginx
    

三、缓存时间

为提升网站的响应速度,可以通过设置缓存时间来减少重复请求,尤其适用于静态内容。

3.1 操作步骤

  1. 编辑 Nginx 配置文件:
    vim /usr/local/nginx/conf/nginx.conf
    
  2. 针对图片资源设置缓存时间:
    http {...server {...location / {root html;index index.html index.htm;}location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ {root html;expires 1d;  # 设置缓存时间为1天}...}
    }
    
  3. 重启 Nginx 服务:
    systemctl restart nginx
    
  4. 访问测试资源,并查看响应头信息确认缓存时间:
    curl -I http://www.kgc.com/wangsicong.jpg
    

四、日志切割

随着时间推移,Nginx 的日志文件可能会变得非常庞大。通过定期切割日志,可以避免日志文件过大影响服务器性能。

4.1 操作步骤

  1. 创建日志切割脚本:
    vim /opt/fenge.sh
    
  2. 在脚本中添加以下内容:
    #!/bin/bash
    day=$(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}/kgc.com-access.log-$day  # 移动并重命名日志文件
    kill -USR1 $(cat $pid_path)  # 重建日志文件
    find $logs_path -mtime +30 -exec rm -rf {} \;  # 删除30天前的日志
    
  3. 赋予脚本执行权限并执行脚本:
    chmod +x /opt/fenge.sh
    /opt/fenge.sh
    
  4. 配置定时任务,定期执行日志切割:
    crontab -e
    0 1 * * * /opt/fenge.sh
    

五、连接超时

设置连接超时可以避免长时间占用服务器资源,从而提升 Nginx 的性能。

5.1 操作步骤

  1. 编辑 Nginx 配置文件:
    vim /usr/local/nginx/conf/nginx.conf
    
  2. 设置连接超时参数:
    http {...keepalive_timeout 65 180;  # 设置三次握手的超时时间client_header_timeout 80;  # 设置客户端请求头的超时时间client_body_timeout 80;  # 设置客户端请求体的超时时间...
    }
    
  3. 重启 Nginx 服务:
    systemctl restart nginx
    

六、更改进程数

在高并发场景下,通过增加 Nginx 进程数可以提高服务器的处理能力。

6.1 操作步骤

  1. 查看 CPU 核数:
    cat /proc/cpuinfo | grep -c "physical id"
    
  2. 编辑 Nginx 配置文件,调整进程数:
    vim /usr/local/nginx/conf/nginx.conf
    worker_processes  2;  # 设置为CPU核数的2倍
    worker_cpu_affinity 01 10;  # 设置进程与CPU的对应关系
    
  3. 重启 Nginx 服务:
    systemctl restart nginx
    

七、配置网页压缩

通过压缩网页内容,可以减少传输数据的大小,节省带宽并提高用户的访问体验。

7.1 操作步骤

  1. 编辑 Nginx 配置文件,开启 Gzip 压缩功能:
    vim /usr/local/nginx/conf/nginx.conf
    
  2. http 块中加入以下配置:
    http {...gzip on;  # 开启 gzip 压缩gzip_min_length 1k;  # 最小压缩文件大小gzip_buffers 4 64k;  # 设置压缩缓冲区gzip_http_version 1.1;  # 设置 HTTP 版本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;  # 压缩类型...
    }
    
  3. 重启 Nginx 服务:
    systemctl restart nginx
    
  4. 在浏览器中测试压缩效果,检查响应头中的 Content-Encoding: gzip

八、配置防盗链

防盗链可以防止他人盗用服务器上的资源,保护带宽和服务器资源。

8.1 操作步骤

  1. 编辑 Nginx 配置文件,添加防盗链配置:

    vim /usr/local/nginx/conf/nginx.conf
    
  2. server 块中添加以下配置:

    server {...location ~* \.(jpg|gif|swf)$ {valid_referers none blocked *.kgc.com kgc.com;if ($invalid_referer) {rewrite ^/ http://www.kgc.com/error.png;  # 或使用 return 403;}}...}
    
  3. 配置完成后,重启 Nginx 服务:

    systemctl restart nginx
    

*.kgc.com kgc.com;
if ($invalid_referer) {
rewrite ^/ http://www.kgc.com/error.png; # 或使用 return 403;
}
}

}


3. 配置完成后,重启 Nginx 服务:
```bash
systemctl restart nginx
  1. 准备好网页和资源文件,测试防盗链效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/51171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文分享】Graviton: Trusted Execution Environments on GPUs 2018’OSDI

目录 AbstractIntroductioncontributions BackgroundGPUSoftware stackHardwareContext and channel managementCommand submissionProgramming modelInitializationMemory allocationHost-GPU transfersKernel dispatch Sharing Intel SGX Threat ModelOverviewGraviton Archi…

CLIP-VIT-L + Qwen 多模态源码阅读 - 语言模型篇(3)

多模态学习笔记 - 语言模型篇(3) 参考repo:WatchTower-Liu/VLM-learning; url: VLLM-BASE 吐槽 今天接着昨天的源码继续看,黑神话:悟空正好今天发售,希望广大coder能玩的开心~ 学习心得 前情提要 详情请看多模态…

设计模式笔记01(java版)

文章目录 设计模式概述学习设计模式的必要性设计模式分类创建型模式结构型模式行为型模式 UML类图概述类图的作用类图表示法类的表示方式类与类之间关系的表示方式1,单向关联2,双向关联3,自关联聚合关系组合关系依赖关系继承关系实现关系 软件…

Pytorch 张量运算函数(补充)

mean() mean()函数是进行张量均值计算的函数,常用参数可以设置参数dim来进行对应维度的均值计算 以下是使用一个二维张量进行演示的例子 import numpy as np import torch device torch.device(mps if torch.backends.mps.is_available() else cpu) print(device ) data1 …

C++ | Leetcode C++题解之第367题有效的完全平方数

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isPerfectSquare(int num) {double x0 num;while (true) {double x1 (x0 num / x0) / 2;if (x0 - x1 < 1e-6) {break;}x0 x1;}int x (int) x0;return x * x num;} };

linux系统,ubuntu安装英伟达NVIDIA4090显卡驱动

文章目录 前言下载英伟达NVIDIA官方驱动安装NVIDIA驱动远程安装关闭交互界面设置权限&#xff08;自己确认版本号5&#xff09;安装&#xff08;自己确认版本号5&#xff09;打开交互界面&#xff0c;并重启系统验证是否安装成功 异常处理问题1问题2问题3&#xff08;可能没解决…

Linux 支持程序在运行时动态加载和卸载共享库,动态链接库

动态链接库 Linux支持动态链接库&#xff08;共享库&#xff09;的概念&#xff0c;允许程序在运行时动态加载和卸载共享库。这有助于减小可执行文件的大小&#xff0c;共享代码&#xff0c;提高代码的可重用性。 #include <dlfcn.h> #include <iostream>int mai…

python小游戏——躲避球(可当课设)

游戏简介&#xff1a; 没有美术&#xff0c;画面简洁&#xff08;懒得做&#xff09;。玩家控制小球躲避敌人&#xff08;上下左右&#xff0c;闪避&#xff09;&#xff0c;敌人体积越大速度越慢&#xff0c;随机生成道具球&#xff08;目前只有生命球&#xff09;&#xff0…

day_49

42. 接雨水 class Solution:def trap(self, height: List[int]) -> int:stack []res 0for i in range(len(height)):while(stack and height[i] > height[stack[-1]]):mid stack.pop()if stack:h min(height[i], height[stack[-1]]) - height[mid]w i - stack[-1] …

​14:00面试,14:06就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到5月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

Redis内存淘汰

Redis内存淘汰 Redis可以存储多少数据 maxmemory配置&#xff0c;默认是注释掉的。 #maxmemory <bytes>我们可以主动配置maxmemory&#xff0c;maxmemory支持各种单位&#xff0c;默认是字节 maxmemory 1024 maxmemory 1024KB maxmemory 1024MB maxmemory 1024GB当Re…

跟着GPT学习 Kubernetes ,简称 K8s -- Kind(三)

在 Mac M1 上使用 Kind&#xff08;Kubernetes in Docker&#xff09;学习 Kubernetes 是一个非常合适的选择&#xff0c;因为 Kind 可以在本地轻松地创建一个 Kubernetes 集群&#xff0c;适合进行开发、测试和学习。让我们一步一步地从头开始&#xff0c;设置你的环境并逐步学…

shallowReactive 与 shallowRef

除了之前的 ref与reactive 之外&#xff0c;Vue3 还准备了另外两个API&#xff0c;也是用来对响应式数据做处理&#xff0c;那就是 shallowReactive 与 shallowRef shallowReactive 文档解释&#xff1a;reactive() 的浅层作用形式&#xff0c;只能定义对象类型的数据。和 r…

Spring Boot整合Sentry

Spring Boot整合Sentry Sentry搭建Sentry中新建项目集成SpringBoot1. 添加依赖2. 配置Sentry4. 日志集成&#xff08;可选&#xff09;5. 测试Sentry集成6. 配置实时告警配置Alert Settings配置警报规则 发送消息服务代码参照文档 Sentry 是一个日志平台&#xff0c;分为客户端…

AI 未来两年:史无前例的变革与挑战

2024 年 8 月 20 日&#xff0c;正站在科技变革的风暴中心&#xff0c;见证着人工智能&#xff08;AI&#xff09;以惊人的速度重塑着世界。谷歌前 CEO Eric Schmidt 对 AI 未来两年的预测&#xff0c;引起了广泛关注&#xff0c;如今 YC 的 CEO Garry Tan 也高度赞同这些观点&…

CMakeLists.txt模板

#设置编译该CMakeLists.txt文件所需要的最低cmake版本 CMAKE_MINIMUM_REQUIRED(VERSION 最低版本号)# 该项目名称 PROJECT(项目名称)SET(CMAKE_CXX_STANDARD 11)SET(CMAKE_C_STANDARD 11)# 此行可以理解为将路径下所有的文件装载到自定义集合filelist中 FILE(GLOB filelist &q…

Vite + Vue 3 项目中实现路由自动化完整步骤。

下面是从创建项目到实现路由自动化的完整步骤 在 Vite Vue 3 项目中实现路由自动化可以通过使用文件系统路由生成器来简化路由管理过程。以下是实现路由自动化的完整步骤&#xff1a; 1.创建 Vite Vue 3 项目 如果你还没有一个 Vite Vue 3 项目&#xff0c;可以使用以下命令…

利用MongoDB进行数据治理,防范构建生成式AI应用程序时的潜在安全风险

生成式人工智能&#xff08;生成式AI&#xff09;正在蓬勃发展&#xff0c;许多企业和初创公司正在运用AI工具来解决各自的用例问题。随着企业逐渐适应市场上的新技术范式转移&#xff0c;开发者社区和开源模型也在不断发展壮大。 构建智能生成式AI应用程序需要灵活运用数据。…

基础算法--高精度数据(1)

高精度数据处理一般内容简单&#xff0c;写代码难度较大&#xff0c;可能部分内容涉及基础数学、初等数论等知识。请小心食用。不过本节不会给大家太难的高精度处理&#xff0c;我们第一次接触&#xff0c;不能劝退大家对吧。 高精度算法是指&#xff0c;利用基础或高级的数学…

盘古信息IMS MCM制造协同管理系统:为中小企业数字化转型量身打造的数字化方案

近年来&#xff0c;全球经济的不稳定性&#xff0c;给中小企业的经营和发展带来了巨大的挑战。为提升企业竞争力&#xff0c;中小企业纷纷谋求数字化转型路径&#xff0c;优化生产流程、提高运营效率、降低生产成本&#xff0c;以应对变幻莫测的市场环境。IMS MCM是盘古信息为广…