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、验证结果

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

相关推荐
小黑爱编程20 分钟前
【LInux】HTTPS是如何实现安全传输的
linux·安全·https
BeyondESH25 分钟前
Linux线程同步—竞态条件和互斥锁(C语言)
linux·服务器·c++
鱼饼6号41 分钟前
Prometheus 上手指南
linux·运维·centos·prometheus
Asher Gu1 小时前
Linux系统编程入门 | 模拟实现 ls -l 命令
linux
c无序1 小时前
【Linux进程控制】进程程序替换
linux
GoppViper1 小时前
golang学习笔记29——golang 中如何将 GitHub 最新提交的版本设置为 v1.0.0
笔记·git·后端·学习·golang·github·源代码管理
m0_464832362 小时前
Linux服务器上安装git lfs命令
git
小安运维日记3 小时前
Linux云计算 |【第四阶段】NOSQL-DAY1
linux·运维·redis·sql·云计算·nosql
CoolTiger、6 小时前
【Vmware16安装教程】
linux·虚拟机·vmware16
学习3人组7 小时前
CentOS 中配置 OpenJDK以及多版本管理
linux·运维·centos