Nginx服务优化配置解析相关

本文详细介绍了Nginx服务的优化配置,包括隐藏版本号以增强安全性,修改Nginx用户与组以实现访问控制,配置网页缓存时间和日志切割。还深入讨论了连接超时设置、进程数调整、网页压缩功能配置、防盗链功能以及FPM模块的参数优化,旨在提升Nginx服务的性能和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nginx服务优化

隐藏Nginx版本号,避免安全漏洞泄漏

Nginx隐藏版本号的方法

修改配置文件法

将Nginx配置文件中的server_tokens选项的值设置为off,然后重启服务,访问网站使用curl -I 命令检测
vi /etc/nginx.conf
在这里插入图片描述

修改源码法

vi nginx-1.12.2/src/core/nginx.h
在这里插入图片描述
#define nginx_version 1001010 #发行时间的修改
#define NGINX_VERSION “0.0.0” #发行版本号的修改
#define NGINX_VER “IIS/” NGINX_VERSION #搭建服务所使用的软件修改

再将server_tokens 的选项改成on后关闭nginx重新编译安装,开启服务后查看
systemctl stop nginx
cd nginx-1.12.2/
make && make install
systemctl start nginx
curl -I http://localhost
在这里插入图片描述

修改Nginx用户与组

Nginx运行时进程需要用户与组的支持,以实现对网站文件读取时进行访问控制
Nginx默认使用nobody用户账号与组账号

修改的方法

编译安装指定用户与组(具备用户和组的功能性)

创建用户账号与组账号nginx
编译安装时–user与–group指定Nginx服务的运行用户与组账号
在这里插入图片描述

修改配置文件指定用户与组(实际以该用户与组身份去运行)

新建用户账号nginx1
修改主配置文件user选项,指定用户账号与组账号
vi /etc/nginx.conf
在这里插入图片描述
在这里插入图片描述

配置Nginx网页缓存时间

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

对图片进行缓存

添加图片到/usr/local/nginx/html/中
进行图片链接创建
cd /usr/local/nginx/html/
vi index.html
在这里插入图片描述
vi /etc/nginx.conf
在这里插入图片描述
再次登录与之前登录对比
在这里插入图片描述

日志切割

随着Nginx运行时间增加,日志也会增加。为了方便掌握Nginx运行状态,需要时刻关注Nginx日志文件。太大的日志文件对监控是一个负担,所以要定期对日志进行切割,Nginx自身不具备日志分割处理的功能,但可以通过Nginx信号控制功能的脚本实现日志的自动切割,通过Linux的计划任务周期性的进行日志切割

编写脚本进行日志切割的思路设置时间变量
设置保存日志路径
将目前的日志文件进行重命名
重建新日志文件
删除时间过长的日志文件
设置cron任务,定期执行脚本自动进行日志分割

时间相关
date “+%Y%m%d” 查看当前日期时间
date “+%Y-%m-%d” 另一种格式查看当前的年月日
date -d “-1 day” “+%Y-%m-%d” 查看昨天日期
date -d “+1 day” “+%Y-%m-%d” 查看明天日期
在这里插入图片描述
时间参数
在linux操作系统中,每个文件都有三个比较重要的时间参数:ctime, atime, mtime
modification time (mtime) :当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。
change time (ctime):当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是createtime,更像是change time。 只有当更新文件的属性或者权限的时候才会更新这个时间,但是更改内容的话是不会更新这个时间。
accesstime (atime):当使用这个文件的时候就会更新这个时间。

查看文件近期状态
在这里插入图片描述
-exec和 xargs参数解析
find. -inum xxx -exec rm -i {};
这条命令的意思是find找到的内容作为后面rm删除的对象
-exec参数后面跟的是命令,它的终止是以;为结束标志的,{}代表前面find找出来的文件名,\代表换行符,是立即执行的意思。
find. -inum xxx | xargs rm -f ,xargs这个参数就是强力的意思,如果前面的输出结果包含空格或制表符也会被强力执行

kill -QUIT 结束进程
-HUP 平滑重启类似reload
-USR1 日志分隔
-USR2 平滑升级

编写脚本
vi rzfg.sh(日志文件的生成路径为logs/aa.com.access.log)
在这里插入图片描述
登录网页后运行脚本
./rzfg.sh
在这里插入图片描述
定时运行
crontab -e #编写任务计划
在这里插入图片描述

Nginx深入优化

配置Nginx实现连接超时

为避免同一客户端长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间

参数

Keepalive_time:设置连接保持超时时间
Client_header_timeout:指定等待客户端发送请求头的超时时间Client_body_timeout:设置请求体读超时时间

请求头header

request如果是post才有请求体,get则没有请求体,直接跟在?后面,用&隔开,请求头header一般用来存放一些cookie, token信息;
Cookie是一个保存在客户机中的简单的文本文件,这个文件与特定的Web. 文档关联在一起,保存了该客户机访问这个Web文档时的信息,当客户机再次访问这个Web文档时这些信息可供该文档使用。由于“Cookie”具有可以保存在客户机上的神奇特性,因此它可以帮助我们实现记录用户个人信息的功能,而这一切都不必使用复杂的CGI等程序。
举例来说,一个Web站点可能会为每一个访问者产生一个唯一的ID,然后以Cookie文件的形式保存在每个用户的机器上。如果使用浏览器访问Web,会看到所有保存在硬盘上的Cookie。在这个文件夹里每一个文件都是一个由“名/值”对组成的文本文件,另外还有一个文件保存有所有对应的Web站点的信息。在这里的每个Cookie 文件都是一个简单而又普通的文本文件。透过文件名,就可以看到是哪个Web站点在机器上放置了Cookie(当然站点信息在文件里也有保存)。
Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。
Token的定义: Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

配置

vi /etc/nginx.conf
在这里插入图片描述
重启后登录网页,抓包
在这里插入图片描述

更改Nginx运行进程数

在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞查看CPU或者核数
cat /proc/cpuinfo | grep -c “physical”
在这里插入图片描述
更改进程数的配置方法:修改配置文件,修改进程配置参数
修改配置文件的worker_processes参数:一般设为CPU的个数或者核数,在高并发情况下可设置为CPU个数或者核数的2倍
vi /etc/nginx.conf
在这里插入图片描述
增加进程数,可减少了系统的开销,提升了服务速度
使用ps aux查看运行进程数的变化情况
ps aux | grep nginx
在这里插入图片描述
默认情况下,Nginx的多个进程可能跑在一个CPU上,可以分配不同的进程给不同的CPU处理,充分利用硬件多核多CPU

配置Nginx实现网页压缩功能

Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能。允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节省网站带宽,提升用户的访问体验,默认已经安装。可在配置文件中加入相应的压缩功能参数对压缩性能进行优化。

压缩功能参数

gzip on:开启gzip压缩输出
gzip_min_length 1k:设置允许压缩的页面最小字节数
gzip_buffers 4 16k:申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果
gzip_http_version 1.0:设置识别http协议版本,默认是1.1,目前大部分浏览器已经支持gzip压缩但处理较慢,也比较消耗服务器CPU资源
gzip_comp_level 2:指定gzip压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理速度最慢。
gzip_types text/pain:压缩类型,对哪些网页文档启用压缩功能
gzip_vary on:让前端缓存服务器缓存经过gzip压缩的页面。

vi /etc/nginx.conf
在这里插入图片描述
重启后登录网页进行抓包
在这里插入图片描述

配置Nginx实现防盗链

到/usr/local/nginx/html/下,配置新的网页,并将图片放置再此
在这里插入图片描述
布置图片盗用
再另一台主机上配置网页
在这里插入图片描述
配置防盗链
在这里插入图片描述
重启后登录另一台主机网页
在这里插入图片描述

对FPM模块进行参数优化

Nginx的PHP解析功能实现如果是交由FPM处理的,为了提高PHP的处理速度, 可对FPM模块进行参数的调整
根据服务器的内存与服务负载,调整FPM模块参数

启动fpm进程方式,通过pm参数指定
static:将产生固定数量的fpm进程 (静态)
pm.max_children: 指定启动的进程数量

dynamic:将以动态的方式产生fpm进程 (动态)
pm.max_children:指定启动进程数的最大值
pm.start_servers: 动态方式下初始的fpm进程数
pm.min_spare_servers: 动态方式下最小的fpm空闲进程数
pm.max_spare_servers: 动态方式下最大的fpm空闲进程数

cd /usr/local/php/etc/php-fpm.d/
vi www.conf
0pm = dynamic
pm.max_children = 20 static模式下空闲进程数上限,大于下面的值
pm.start_servers = 5 动态方式下默认开启的进程数,在最小和最大之间
pm.min_spare_servers = 2 动态方式下最少空闲进程数
pm.max_spare_servers = 8 动态方式下最大空闲进程数
在这里插入图片描述
ps aux | grep php-fpm查看进程状态
pkill php-fpm终止进程
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini 重新加载
ps aux | grep php-fpm
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值