目录
[三、 Nginx缓存时间](#三、 Nginx缓存时间)
[1、Nginx 配置文件设置](#1、Nginx 配置文件设置)
[1、查看 CPU 核数](#1、查看 CPU 核数)
[2、修改 Nginx 配置文件](#2、修改 Nginx 配置文件)
[1、修改 Nginx 配置文件](#1、修改 Nginx 配置文件)
[1.1、修改 Nginx 配置文件](#1.1、修改 Nginx 配置文件)
[1.3、更新 /etc/hosts 文件,添加映射](#1.3、更新 /etc/hosts 文件,添加映射)
[2.2、更新 /etc/hosts 文件,添加映射](#2.2、更新 /etc/hosts 文件,添加映射)
一、隐藏版本号
在服务器运维中,有时需要查看 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_processes
和 worker_cpu_affinity
参数
worker_processes
:
- 该值通常设置为与 CPU 核数相同或其2倍,以最大限度地利用多核 CPU 的并行处理能力。
- 例如,如果服务器有 4 个 CPU 核,
worker_processes
可以设置为4
或8
。
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、验证结果
在盗图网站主机上进行浏览器验证