0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Nginx服务优化教程

马哥Linux运维 ? 来源:博客园 ? 2025-03-12 15:57 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1.Nginx服务优化

(1)配置Nginx隐藏版本号

隐藏Nginx版本号,避免安全漏洞泄漏:修改配置文件法;修改源码法
server_tokens off; ##添加,关闭版本号
nginx.h ##修改源码

4c45497a-fe65-11ef-9310-92fbcf53809c.png
4c5d4282-fe65-11ef-9310-92fbcf53809c.png

4c763e4a-fe65-11ef-9310-92fbcf53809c.png
4c9a26f2-fe65-11ef-9310-92fbcf53809c.png

重新编译安装
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make -j 2 && make install

4cb2a128-fe65-11ef-9310-92fbcf53809c.png
4ccd8650-fe65-11ef-9310-92fbcf53809c.png
4cdfff1a-fe65-11ef-9310-92fbcf53809c.png
4cede3e6-fe65-11ef-9310-92fbcf53809c.png

headers-more-nginx-module-0.34.tar.gz插件包,解压到一个目录,编译安装nginx,./configure --add-module='模块路径' && make -j 2 && make install 修改nginx.conf 文件,在http配置块加more_clear_ headers '响应头字段';  ————可去除响应头任何字段

(2)修改Nginx用户与组

Nginx运行时进程需要有用户与组的支持,以实现对网站文件读取时进行访问控制
Nginx默认使用nobody用户账号与组账号
修改的方法:编译安装时指定用户与组;修改配置文件指定用户与组
user 用户名 组名;
4d03208a-fe65-11ef-9310-92fbcf53809c.png
4d1b1906-fe65-11ef-9310-92fbcf53809c.png

(3)配置Nginx网页缓存时间

当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度
一般针对静态网页设置,对动态网页不设置缓存时间
设置方法:修改配置文件,在http段、或者server段、或者location段加入对特定内容的过期参数
expires 缓存时间;

4d301388-fe65-11ef-9310-92fbcf53809c.png

(4)实现Nginx的日志切割

随着Nginx运行时间增加,日志也会增加。为了方便掌握Nginx运行状态,需要时刻关注Nginx日志文件
太大的日志文件对监控是一个大灾难:定期进行日志文件的切割
Nginx自身不具备日志分割处理的功能,但可以通过Nginx信号控制功能的脚本实现日志的自动切割
通过Linux的计划任务周期性地进行日志切割
shell脚本 + crontab
4d45de02-fe65-11ef-9310-92fbcf53809c.png
4d57f8bc-fe65-11ef-9310-92fbcf53809c.png

在linux操作系统中,每个文件都有很多的时间参数,其中有三个比较主要,分别是ctime,atime,mtime
ctime(status time):
当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,更像是change time,
只有当更新文件的属性或者权限的时候才会更新这个时间,但是更改内容的话是不会更新这个时间。

atime(accesstime):
当使用这个文件的时候就会更新这个时间。

mtime(modification time):
当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。

(5)配置Nginx实现连接超时

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

超时参数:
Keepalive_timeout 服务端超时时间 客户端超时时间;##设置连接保持超时时间
Client_header_timeout ##指定等待客户端发送请求头的超时时间
Client_body_timeout ##设置请求体读超时时间
4d65615a-fe65-11ef-9310-92fbcf53809c.png
4d7f063c-fe65-11ef-9310-92fbcf53809c.png

keepalive_timeout
指定KeepAlive的超时时间(timeout)。指定一个长连接最多可以保持多长时间,服务器将会在这个时间后关闭连接。Nginx的默认值是65秒,有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。若将它设置为0,就禁止了keepalive 连接。
第二个参数(可选的)指定了在响应头Keep-Alive:timeout=time中的time值。这个头能够让一些浏览器主动关闭连接,这样服务器就不必去关闭连接了。没有这个参数,Nginx 不会发送 Keep-Alive 响应头。

client_header_timeout
客户端向服务端发送一个完整的 request header 的超时时间。如果客户端在指定时间内没有发送一个完整的 request header,Nginx 返回 HTTP 408(Request Timed Out)。

client_body_timeout
指定客户端与服务端建立连接后发送 request body 的超时时间。如果客户端在指定时间内没有发送任何内容,Nginx 返回 HTTP 408(Request Timed Out)。

(6)更改Nginx运行进程数

在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞
修改配置文件的worker_processes参数:一般设为CPU的个数或者核数;在高并发情况下可设置为CPU个数或者核数的2倍
增加进程数,可减少了系统的开销,提升了服务速度
默认情况,Nginx的多个进程可能跑在一个CPU上,可以分配不同的进程给不同的CPU处理,充分利用硬件多核多CPU
4d93db98-fe65-11ef-9310-92fbcf53809c.png

cat /proc/cpuinfo | grep -c "physical id" #查看cpu核数 
ps aux | grep nginx#查看nginx主进程中包含几个子进程
worker_processes 与服务器CPU数量相同或auto   #修改为cpu的总核数,一般情况不超过8个
worker_cpu_affinity ##工作进程静态绑核
#将每个worker子进程与特定CPU物理核心绑定,提升cpu利用率,进而提升性能。避免同一个worker子进程在不同的CPU核心上切换或者多个进程跑在一个CPU上,缓存失效,降低性能。

4dac5164-fe65-11ef-9310-92fbcf53809c.png

(7)配置Nginx实现网页压缩功能

Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能
允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装
可在配置文件中加入相应的压缩功能参数对压缩性能进行优化
gzip on; #开启gzip压缩功能
4dc47866-fe65-11ef-9310-92fbcf53809c.png
4ddaa2a8-fe65-11ef-9310-92fbcf53809c.png
4de52502-fe65-11ef-9310-92fbcf53809c.png

#实现网页图片的大小压缩
http_image_filter_module是Nginx提供的集成图片处理模块,可以用于实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息
yum install -y gd-devel  ##yum在线源安装gd-devel,http_image_filter_module模块需要依赖gd-devel的支持,重新编译安装启动
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_image_filter_module 
make -j 2 && make install
image_filter resize 200 200;#按等比例缩小图像的宽或高至指定大小。如果只想设置一个维度,另一维可以指定为:“-”


#注:Nginx的Gzip压缩功能虽然好用,但是下面两类文件资源不太建议启用此压缩功能。
1)图片/视频类型资源 原因:图片如jpg、png文件本身就会有压缩,所以就算开启gzip后,压缩前和压缩后大小没有多大区别,所以开启了反而会白白的浪费资源。
2)大文件资源 原因:会消耗大量的cpu资源,且不一定有明显的效果。

4dfa7f06-fe65-11ef-9310-92fbcf53809c.png

(8)配置Nginx实现防盗链

在企业网站服务中,一般都要配置防盗链功能,以避免网站内容被非法盗用,造成经济损失
Nginx防盗链功能也非常强大。默认情况下,只需要进行简单的配置,即可实现防盗链处理

ewrite if ( $invalid_referer) {rewrite... }

4e0ce4d4-fe65-11ef-9310-92fbcf53809c.png

~* .(jpg|gif|swf)$ :这段正则表达式表示匹配不区分大小写,以.jpg 或.gif 或.swf 结尾的文件;
valid_referers :设置信任的网站,可以正常使用图片;
none:允许没有http_refer的请求访问资源(根据Referer的定义,它的作用是指示一个请求是从哪里链接过来的,如果直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含 Referer 字段的),如 http://www.kgc.com/game.jpg
我们使用 http://www.kgc.com 访问显示的图片,可以理解成 http://www.kgc.com/game.jpg 这个请求是从 http://www.kgc.com 这个链接过来的。
blocked:允许不是http://开头的,不带协议的请求访问资源;
*.kgc.com:只允许来自指定域名的请求访问资源,如 http://www.kgc.com

if语句:如果链接的来源域名不在valid_referers所列出的列表中,$invalid_referer为true,则执行后面的操作,即进行重写或返回 403 页面。

(1)实验演练

盗链网站主机(20.0.0.160)
4e277dbc-fe65-11ef-9310-92fbcf53809c.png
4e3b4112-fe65-11ef-9310-92fbcf53809c.png
4e4db090-fe65-11ef-9310-92fbcf53809c.png

Web源主机(20.0.0.150)
4e77204c-fe65-11ef-9310-92fbcf53809c.png
4e884af2-fe65-11ef-9310-92fbcf53809c.png
4e9e4f5a-fe65-11ef-9310-92fbcf53809c.png

(9)nginx常用模块

http_stub_status_module       访问状态统计模块
http_gzip_module              网页压缩模块
http_rewrite_module           URL地址重写模块
http_ssl_module               https安全加密模块
http_auth_basic_module        网页用户认证模块
http_fastcgi_module           fastcgi转发模块
http_image_filter_module      图片处理模块
http_mp4/flv_module           mp4/flv视频格式模块
http_limit_req_module         限制请求数模块
http_limit_conn_module        限制连接数模块
http_proxy_module             代理转发模块
http_upstream_*_module        负载均衡模块
stream                        四层代理转发模块

链接:https://www.cnblogs.com/zsy828/p/18223841

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 源码
    +关注

    关注

    8

    文章

    674

    浏览量

    30403
  • 编译
    +关注

    关注

    0

    文章

    680

    浏览量

    34263
  • nginx
    +关注

    关注

    0

    文章

    172

    浏览量

    12667

原文标题:1.Nginx服务优化

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux上Nginx获得最佳性能的8种方法

    NGINX 是一种流行的、免费的开源 Web 服务器。默认的 NGINX 配置足以让 Web 服务器正常工作。 但是,如果您想充分利用 NGINX
    发表于 01-16 09:51 ?673次阅读

    nginx重启命令linux步骤是什么?

      nginx.conf test is successful   说明配置文件正确!   方法二:在启动命令-c前加-t   2、重启Nginx服务   方法一:进入nginx可执
    发表于 07-11 17:13

    【NanoPi2试用体验】高级(一):基于nginx的web服务

    /nginx reload在浏览器中打开地址192.168.1.222:8080服务器正常!征文活动,多多捧场:https://bbs.elecfans.com/jishu_531047_1_1.html
    发表于 01-03 11:00

    NanoPi NEO - 可靠的Nginx 网络服务

    服务器部署,并删除匿名用户和测试数据库。#mysql_secure_installation根据提示进行选择:3. 安装nginx如果你之前已经安装了Apache2,则需要先移除apache2
    发表于 06-20 15:43

    Linux运维Nginx软件优化之安全优化

    一、Nginx优化分类安全优化(提升网站安全性配置)性能优化(提升用户访问网站效率)二、Nginx安全
    发表于 12-17 15:12

    Linux运维Nginx软件优化Nginx性能优化

    1. 优化nginx worker进行个数nginx服务主要有两个重要进程:01) master进程:可以控制nginx
    发表于 12-18 15:11

    Linux运维Nginx软件优化之日志优化

    1. 配置Nginx服务相关日志操作1) 进行日志的切割[code][root@oldboy ~]# mkdir /server/scripts/ -p[root@oldboy ~]# cd
    发表于 12-18 15:17

    Nginx的安装和启动服务

    Mac上搭建直播服务Nginx+rtmp
    发表于 08-05 14:54

    nginx服务静态资源的配置

    nginx的基础应用
    发表于 09-05 09:04

    Nginx服务器的搭建步骤

    ①搭建Nginx服务器②SSL加密网站③基于域名虚拟主机
    发表于 04-07 16:20

    请问zabbix怎么使用模版监控nginx服务

    zabbix使用模版监控nginx服务的方法步骤
    发表于 11-04 07:16

    Nginx架构介绍 Nginx服务器模型分析

    Nginx是一款免费的、开源的、高性能、模块化、轻量级的HTTP服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。
    的头像 发表于 01-10 16:32 ?9548次阅读
    <b class='flag-5'>Nginx</b>架构介绍 <b class='flag-5'>Nginx</b><b class='flag-5'>服务</b>器模型分析

    Nginx的详细知识点讲解

    Nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好 ngi
    的头像 发表于 12-26 10:25 ?2892次阅读
    <b class='flag-5'>Nginx</b>的详细知识点讲解

    Nginx 如何实现高性能低消耗

    Nginx 是一个轻量级的HTTP 服务程序,相比其他服务器程序如Apache,Nginx占用内存少,稳定性高,并发处理能力强。同时Nginx
    的头像 发表于 11-11 11:31 ?843次阅读
    <b class='flag-5'>Nginx</b> 如何实现高性能低消耗

    Nginx性能优化终极指南

    而worker 进程数默认为 1 。单进程最大连接数为1024。如下图(打开Nginx目录下的/conf/nginx.conf 文档),现在我们来对这两个数值进行调优
    的头像 发表于 06-16 13:44 ?338次阅读
    <b class='flag-5'>Nginx</b>性能<b class='flag-5'>优化</b>终极指南