Nginx优化与防盗链

目录

一、隐藏版本号

1、修改配置文件方式

2、自定义修改源代码

二、修改用户与组

1、修改配置文件指定用户

2、重启服务,查看服务指定用户

[三、 Nginx缓存时间](#三、 Nginx缓存时间)

1、修改配置文件加入特定参数

2、重启服务,访问服务

四、Nginx日志切割

1、编写脚本实现日志分割

2、添加权限,执行脚本

3、设置定时任务

五、KeepAlive连接超时

[1、Nginx 配置文件设置](#1、Nginx 配置文件设置)

2、重启服务,查看服务端

六、更改进程数

[1、查看 CPU 核数](#1、查看 CPU 核数)

[2、修改 Nginx 配置文件](#2、修改 Nginx 配置文件)

3、重启服务,查看进程

七、配置网页压缩

[1、修改 Nginx 配置文件](#1、修改 Nginx 配置文件)

2、上传图片文件并修改网页

八、配置Nginx防盗链

1、源主机配置

[1.1、修改 Nginx 配置文件](#1.1、修改 Nginx 配置文件)

1.2、配置网页和文件

[1.3、更新 /etc/hosts 文件,添加映射](#1.3、更新 /etc/hosts 文件,添加映射)

2、盗链主机配置

2.1、配置网页和文件

[2.2、更新 /etc/hosts 文件,添加映射](#2.2、更新 /etc/hosts 文件,添加映射)

3、验证结果


一、隐藏版本号

在服务器运维中,有时需要查看 Nginx 服务器的版本信息,或者为了安全性目的隐藏或修改该信息。以下是使用 Fiddler 工具和 curl 命令查看 Nginx 版本信息的步骤,以及修改版本信息的两种方法。

1、修改配置文件方式

cpp 复制代码
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://172.16.88.22

关闭版本号

重启服务,查看版本

cpp 复制代码
[root@localhost sbin]# systemctl restart nginx.service 
[root@localhost sbin]# curl -I 172.16.88.22

2、自定义修改源代码

cpp 复制代码
vim /opt/nginx-1.12.0/src/core/nginx.h
#define NGINX_VERSION "1.1.1"                  //修改版本号
#define NGINX_VER "IIS" NGINX_VERSION            //修改服务器类型
                                    
cd /opt/nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --withhttp_stub_status_module

make编译

//重启服务
systemctl restart nginx
//测试
curl -I http://172.16.88.22

修改版本号和版本名称

安装模块和make编译后,重启服务查看版本号

二、修改用户与组

1、修改配置文件指定用户

cpp 复制代码
vim /usr/local/nginx/conf/nginx.conf

user nginx nginx;                //取消注释,修改用户为 nginx ,组为 
nginx

systemctl restart nginx
ps aux | grep nginx
//主进程由root创建,子进程由nginx创建//

指定用户

2、重启服务,查看服务指定用户

三、 Nginx缓存时间

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

1、修改配置文件加入特定参数

cpp 复制代码
vim /usr/local/nginx/conf/nginx.conf
http {
......
 server {
 ...... 
 location / {
 root html;
 index index.html index.htm;
 }
 
 location ~ \.(gif|jpg|jepg|png|bmp|ico)$ { //加入新的 location,以图片作
为缓存对象
 root html;
 expires 1d;        //指定缓存时间,1天
 }
......
 }
}

//重启服务
systemctl restart nginx

//测试访问
http://www.kgc.com/wangsicong.jpg

2、重启服务,访问服务

cpp 复制代码
systemctl restart ngin

访问成功

四、Nginx日志切割

1、编写脚本实现日志分割

cpp 复制代码
vim /opt/fenge.sh

#!/bin/bash
// Filename: fenge.sh

// 获取前一天的日期
day=$(date -d "-1 day" "+%Y%m%d")

// 定义日志文件路径和 Nginx PID 文件路径
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

// 向 Nginx 主进程发送 USR1 信号,重新打开日志文件
kill -USR1 $(cat $pid_path)

// 删除30天之前的日志文件
find $logs_path -mtime +30 -exec rm -rf {} \;

2、添加权限,执行脚本

cpp 复制代码
[root@localhost opt]# chmod +x /opt/fenge.sh
[root@localhost opt]# 
[root@localhost opt]# sh fenge.sh

查看日志文件是否被正确切割

3、设置定时任务

使用 crontab 编辑器设置一个定时任务,每天凌晨 1 点自动运行 fenge.sh 脚本

cpp 复制代码
crontab -e

在打开的编辑器中添加以下内容,然后保存

cpp 复制代码
0 1 * * * /opt/fenge.sh

五、KeepAlive连接超时

HTTP 协议中的 KeepAlive 模式允许 Web 服务器在处理完一个请求后保持 TCP 连接的打开状态。这样,服务器可以复用同一连接处理来自同一客户端的其他请求,从而减少建立新连接的开销。KeepAlive 的超时时间设置对于性能优化和资源管理非常重要。

1、Nginx 配置文件设置

  • keepalive_timeout 65 ; #设置 KeepAlive 超时时间
  • client_header_timeout 80; #设置客户端请求头超时时间
  • client_body_timeout 80; #设置客户端请求体超时时间

2、重启服务,查看服务端

cpp 复制代码
[root@localhost opt]# systemctl restart nginx.service 

六、更改进程数

在高并发场景下,为了保证快速响应并避免请求阻塞,建议根据服务器的 CPU 核数调整 Nginx 进程数。这样可以充分利用服务器的硬件资源,提升并发处理能力。

1、查看 CPU 核数

首先,确定服务器的 CPU 核数,以便设置合适的 Nginx 进程数。

cpp 复制代码
cat /proc/cpuinfo | grep -c "physical id"  # 查看物理 CPU 的数量

查看 Nginx 主进程中包含的子进程数

cpp 复制代码
ps aux | grep nginx  # 查看 Nginx 主进程和子进程

2、修改 Nginx 配置文件

根据 CPU 核数调整 Nginx 的 worker_processesworker_cpu_affinity 参数

worker_processes:

  • 该值通常设置为与 CPU 核数相同或其2倍,以最大限度地利用多核 CPU 的并行处理能力。
  • 例如,如果服务器有 4 个 CPU 核,worker_processes 可以设置为 48

worker_cpu_affinity:

  • 这个参数用于将每个 Nginx 进程绑定到特定的 CPU 核,以提高缓存命中率和性能。

worker_connections:

  • 指定每个 worker 进程所能处理的最大连接数。这个值越高,Nginx 能够同时处理的并发连接数就越多。

3、重启服务,查看进程

cpp 复制代码
[root@localhost opt]# systemctl restart nginx.service 
[root@localhost opt]# 
[root@localhost opt]# ps aux|grep nginx

变为两个进程

七、配置网页压缩

Gzip 压缩可以减少网页的大小,加快页面加载速度。通过以下配置,可以在 Nginx 中启用 Gzip 压缩功能,并指定压缩的文件类型和压缩级别。

  • 可在配置文件中加入相应的压缩功能参数对压缩性能进行优化

1、修改 Nginx 配置文件

2、上传图片文件并修改网页

上传图片

访问网页

八、配置Nginx防盗链

防盗链功能用于防止其他网站未经授权直接引用你的网站上的资源(如图片)。通过以下配置,可以设置防盗链策略,并对不合法的请求进行处理。

cpp 复制代码
172.16.88.22   //源主机

172.16.88.33    //盗链主机

1、源主机配置

1.1、修改 Nginx 配置文件

location ~ .(gif|swf|ico|png)$:*

  • 这是一个正则表达式,用于匹配以 .jpg.gif.swf 结尾的文件,且不区分大小写。
  • valid_referers :
    • none: 允许没有 HTTP Referer 的请求访问资源。
    • blocked: 允许没有 HTTP 协议头的请求访问资源。
    • *.kgc.com : 允许来自 *.kgc.com 域名的请求访问资源。

if ($invalid_referer):

  • 如果请求的 Referer 不在 valid_referers 列表中,则 $invalid_referer 变量为 true,执行后续的重写或返回 403 错误。

1.2、配置网页和文件

cpp 复制代码
[root@localhost html]# vim index.html

编辑以下内容

1.3、更新 /etc/hosts 文件,添加映射

cpp 复制代码
echo "172.16.88.22 www.kgc.com" >> /etc/hosts
echo "172.16.88.33 www.benet.com" >> /etc/hosts

2、盗链主机配置

2.1、配置网页和文件

2.2、更新 /etc/hosts 文件,添加映射

cpp 复制代码
echo "172.16.88.22 www.kgc.com" >> /etc/hosts
echo "172.16.88.33 www.benet.com" >> /etc/hosts

3、验证结果

在盗图网站主机上进行浏览器验证

相关推荐
饮啦冰美式15 分钟前
22.04Ubuntu---ROS2使用rclcpp编写节点
linux·运维·ubuntu
wowocpp16 分钟前
ubuntu 22.04 server 安装 和 初始化 LTS
linux·运维·ubuntu
Huaqiwill17 分钟前
Ubuntun搭建并行计算环境
linux·云计算
wclass-zhengge20 分钟前
Netty篇(入门编程)
java·linux·服务器
Lign1731421 分钟前
ubuntu unrar解压 中文文件名异常问题解决
linux·运维·ubuntu
vip4511 小时前
Linux 经典面试八股文
linux
大霞上仙1 小时前
Ubuntu系统电脑没有WiFi适配器
linux·运维·电脑
孤客网络科技工作室2 小时前
VMware 虚拟机使用教程及 Kali Linux 安装指南
linux·虚拟机·kali linux
Winston Wood3 小时前
一文了解git TAG
git·版本控制
颇有几分姿色3 小时前
深入理解 Linux 内存管理:free 命令详解
linux·运维·服务器