Nginx优化与防盗链技术

  在当今互联网时代,网站的性能和安全性变得尤为重要。Nginx作为一种高性能的HTTP和反向代理服务器,因其轻量级、高效能和灵活性而被广泛应用于各类网站和应用中。然而,随着互联网流量的不断增长和网络袭击的日益猖獗,如何优化Nginx服务并有效防止盗链成为了每个网站管理员必须面对的重要课题。

  Nginx的优化不仅仅是为了提升网站的响应速度和用户体验,更是为了在高并发环境下保持服务器的稳定性和可靠性。通过合理的配置和优化,可以显著减少服务器的资源消耗,提高处理请求的效率,从而为用户提供更快速、更稳定的访问体验。

  此外,防盗链技术作为一种保护网站资源的重要手段,能够有效防止其他网站未经授权地引用和使用本网站的资源,避免带宽的浪费和服务器的过度负载。通过配置防盗链,可以确保网站资源的合法使用,保护网站的利益。

  本文将详细介绍Nginx的优化方法和防盗链技术,帮助网站管理员在实际操作中更好地管理和维护Nginx服务器。我们将从隐藏版本号、修改用户与组、配置网页缓存时间、日志切割、设置连接超时等方面入手,逐步深入探讨Nginx的优化策略。同时,我们还将介绍如何通过更改进程数、配置网页压缩、防盗链和FPM参数优化等高级技巧,进一步提升Nginx的性能和安全性。

Nginx服务优


1.1 隐藏版本号
目的:隐藏Nginx的版本号可以有效防止袭击者利用已知bug对特定版本的Nginx进行袭击,从而提高服务器的安全性。

方法:

修改Nginx主配置文件:在Nginx的主配置文件(通常为nginx.conf)中,将server_tokens指令设置为off。这样可以在HTTP响应头中隐藏Nginx的版本信息。

server_tokens off;

修改Nginx源码文件:如果需要更彻底地隐藏版本信息,可以修改Nginx的源码文件。在src/http/ngx_http_header_filter_module.c文件中,找到ngx_http_server_string和ngx_http_server_full_string变量,将其值修改为自定义字符串,然后重新编译Nginx。

static u_char ngx_http_server_string[] = "Server: MyServer" CRLF;
static u_char ngx_http_server_full_string[] = "Server: MyServer" CRLF;

1.2 修改用户与组

目的:通过修改Nginx运行的用户与组,可以实现对网站文件读取的访问控制,增强服务器的安全性。

方法:

编译安装时指定用户与组:在编译安装Nginx时,可以通过–user和–group参数指定Nginx运行的用户与组。

./configure --user=nginx --group=nginx

修改Nginx配置文件:在Nginx的主配置文件中,通过user指令指定Nginx运行的用户与组。

user nginx nginx;

1.3 配置网页缓存时间

目的:通过配置网页缓存时间,可以加快用户访问速度,减少重复请求,从而提高服务器的性能。

方法:在Nginx配置文件中,通过expires指令设置缓存时间。可以根据不同的文件类型设置不同的缓存时间。

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
      expires 30d;
  }

1.4 日志切割

目的:通过定期切割日志文件,可以方便监控和分析,避免日志文件过大影响服务器性能。

方法:

编写日志切割脚本:编写一个脚本,使用mv命令将当前日志文件重命名为带有日期的文件,然后使用kill -USR1信号通知Nginx重新打开日志文件。

#!/bin/bash
  log_path="/var/log/nginx"
  mv $log_path/access.log $log_path/access_$(date +%Y%m%d).log
  mv $log_path/error.log $log_path/error_$(date +%Y%m%d).log
  kill -USR1 `cat /var/run/nginx.pid`

设置计划任务:使用crontab设置计划任务,定期执行日志切割脚本。

0 0 * * * /path/to/logrotate.sh

1.5 设置连接超时

目的:通过设置连接超时,可以避免资源浪费,控制连接访问时间,提高服务器的性能。

方法:在Nginx配置文件中,通过keepalive_timeout和其他超时参数设置连接超时。

keepalive_timeout 65;
client_header_timeout 10;
client_body_timeout 10;
send_timeout 10;

2. Nginx深入优化

2.1 更改进程数

目的:在高并发环境中,通过合理设置Nginx的工作进程数,可以显著提高服务器的响应速度和处理能力。

方法:

修改worker_processes参数:在Nginx的主配置文件中,通过worker_processes指令设置工作进程数。通常建议将其设置为服务器CPU核心数或其倍数,以充分利用多核CPU的性能。

worker_processes auto;

使用auto参数可以让Nginx自动检测并设置为CPU核心数。

2.2 配置网页压缩

目的:通过启用网页压缩,可以显著减少传输的数据量,节约带宽,提高用户访问速度。

方法:

启用gzip压缩:在Nginx配置文件中,通过gzip指令启用并配置压缩功能。

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_min_length 1000;
gzip_comp_level 5;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_vary on;

gzip on;:启用gzip压缩。
gzip_types:指定需要压缩的文件类型。
gzip_min_length:设置启用压缩的最小文件长度。
gzip_comp_level:设置压缩级别,范围为1-9,数字越大压缩率越高,但CPU消耗也越大。
gzip_buffers:设置用于存储压缩结果的缓冲区大小。
gzip_http_version:指定启用gzip压缩的HTTP协议版本。
gzip_vary:在响应头中添加Vary: Accept-Encoding,以便代理服务器根据客户端的Accept-Encoding头进行缓存。

2.3 配置防盗链
目的:通过配置防盗链,可以有效防止其他网站未经授权地引用和使用本网站的资源,保护网站的带宽和服务器资源。

方法:

使用valid_referers指令:在Nginx配置文件中,通过valid_referers指令设置允许访问的Referer。

location ~* \.(gif|jpg|jpeg|png|css|js)$ {
      valid_referers none blocked server_names *.example.com;
      if ($invalid_referer) {
          return 403;
      }
  }

none:允许没有Referer头的请求。
blocked:允许Referer头被防火墙或代理服务器屏蔽的请求。
server_names:允许Referer头与服务器名称匹配的请求。
*.example.com:允许Referer头为指定域名的请求。
if ($invalid_referer):如果Referer头不在允许列表中,则返回403 Forbidden状态码。

2.4 FPM参数优化
目的:通过优化PHP-FPM(FastCGI Process Manager)参数,可以提高PHP脚本的处理速度和效率,减少服务器的负载。

方法:

调整FPM参数:在PHP-FPM配置文件(通常为www.conf)中,调整以下参数:

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500

pm:设置进程管理模式,dynamic表示动态管理进程数。
pm.max_children:设置最大子进程数。
pm.start_servers:设置启动时的子进程数。
pm.min_spare_servers:设置最小空闲子进程数。
pm.max_spare_servers:设置最大空闲子进程数。
pm.max_requests:设置每个子进程在重启之前可以处理的最大请求数。

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/12204

(0)
凯影的头像凯影
上一篇 2024年6月26日 下午3:07
下一篇 2024年6月27日 下午3:17

相关推荐

  • Win10如何关闭自动锁屏密码-Win10关闭自动锁屏密码方法

    自动锁屏密码通常是为了保护用户的隐私和数据安全。然而,在某些情况下,如在家中或者个人办公室使用电脑时,用户可能希望关闭自动锁屏密码功能,以便更快速地访问电脑,那么下面小编就给大家详细介绍一下Win10关闭自动锁屏密码方法吧。   Win10关闭自动锁屏密码方法 台式机   第一种方法是通过“设置”来关闭自动锁屏密码。   首先,点击屏幕左下角的Windows…

    2024年6月6日
    67000
  • 通过远程桌面连接Windows系统的ECS实例提示“你的远程桌面许可证出现问题,您的会话将在60分钟后断开连接。”错误怎么办?

    问题描述 重启Windows系统的ECS实例之后,通过远程桌面连接实例时提示如下错误。 问题原因 Windows系统的ECS实例的本地组策略编辑器中“指定 RD 会话主机服务器的授权模式”的选项设置不为按设备模式。 解决方案

    2023年11月15日
    80700
  • Windows远程桌面出现CredSSP加密数据修正问题解决方案

    问题现象: 解决方案:方案一:1、win+R打开运行窗口 2、输入gpedit.msc命令,点击“确定” 3、依次展开“计算机配置”->“管理模板”->“系统”->“凭据分配”设置名称: 加密数据库修正 4、双击“加密数据库修正”,将状态改为“启用”,保护级别改为“易受攻击”,应用—>确定 方案二:1、win+R打开运行窗口 2、输入regedit命令,点击…

    2023年7月28日
    66800
  • IPMItool 控制风扇转速

    近期由于需要测试dell服务器,风扇声音非常的大,通过IPMI页面发现不能设置风扇的转速,所以使用通过IPMItool工具来进行控制 首先进入服务器,安装IPMItool工具 apt install ipmitool 验证是否能够使用 如果不在本机服务器上操作,需要从其他机器上操作,需要勾选IPMI设置,允许通过lan进行操作 获取风扇的速度 首先你要输入下…

    2024年4月12日
    94900
  • HBase 详细图文介绍

    一、HBase 定义 Apache HBase™ 是 以 hdfs 为数据存储的 ,一种分布式、可扩展的 NoSQL 数据库。 二、HBase 数据模型 HBase 的设计理念依据 Google 的 BigTable 论文,论文中对于数据模型的首句介绍 。Bigtable 是一个稀疏的 、 分布式的 、 持久的多维排序 map 。之后对于映射的解释如下:该映…

    2023年12月15日
    57800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信