Linux系统架构----Nginx的服务优化

Linux系统架构----Nginx的服务优化

一.隐藏版本号

  • 在生产环境中,需要隐藏Nginx的版本号,以免泄露Nginx的版本,使得攻击者不能针对特定版本进行攻击

查看Nginx的版本有两种方法

  • 使用fiddler工具抓取数据包,查看Nginx版本

  • 在Centos7上使用使用命令 curl -I 查看

隐藏Nginx版本号也有两种方法

  • 修改Nginx的源码文件,指定不显示版本号

  • 修改Nginx的主配置文件

隐藏版本号操作

  • 修改源码文件
[root@server1 ~]# curl -I 10.1.1.172
HTTP/1.1 200 OK
Server: nginx/1.14.1    ##版本号
Date: Sat, 09 Mar 2024 11:27:40 GMT
Content-Type: text/html
Content-Length: 4057
Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT
Connection: keep-alive
ETag: "5d9bab28-fd9"
Accept-Ranges: bytes##修改配置
[root@server2 ~]# vim /etc/nginx/nginx.conf
...
http {include       mime.types;default_type  application/octet-stream;server_tokens off;
...
[root@server2 ~]# systemctl restart nginx.service 
  • 验证是否隐藏版本号
[root@server1 ~]# curl -I 10.1.1.172
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 09 Mar 2024 11:31:19 GMT
Content-Type: text/html
Content-Length: 4057
Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT
Connection: keep-alive
ETag: "5d9bab28-fd9"
Accept-Ranges: bytes

二.修改用户和组

  • Nginx在运行时进程需要有用户和组的支持,用于实现对网站读取时的进行访问控制
  • 主进程由root创建,子进程有指定的用户与组创建
  • Nginx默认使用nobody用户账户和组账号

修改Nginx用户和组有两种方法

  • 在编译安装时指定的用户与组

  • 修改配置文件

修改用户和组操作

  • 编译时指定用户和组
#创建用户,不建立宿主文件,且不能再shell上登录
useradd -M -s /sbin/nologin nginx
#配置,安装且编译
cd /opt/nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \                       //指定用户名为nginx
--group=nginx \                      //指定组名为nginx
--with-http_stub_status_module
  • 修改Nginx的配置文件nginx.conf指定用户和组
[root@server2 ~]# vim /etc/nginx/nginx.conf
...
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
...
  • 查看Nginx进程运行情况
[root@server2 ~]# ps aux |grep nginx
root       25282  0.0  0.0 119160  2176 ?        Ss   19:30   0:00 nginx: master process /usr/sbin/nginx
nginx      25283  0.0  0.2 151852  8140 ?        S    19:30   0:00 nginx: worker process
nginx      25284  0.0  0.2 151852  8140 ?        S    19:30   0:00 nginx: worker process
nginx      25285  0.0  0.2 151852  8140 ?        S    19:30   0:00 nginx: worker process
nginx      25286  0.0  0.2 151852  8140 ?        S    19:30   0:00 nginx: worker process
root       25291  0.0  0.0  12348  1036 pts/2    S+   19:35   0:00 grep --color=auto nginx

三.配置网页缓存时间

  • 当Nginx将网页数据返回给给客户端之后,可以设置缓存的时间,方便下次再浏览相同的内容时直接返回,避免重复请求,加快访问速度,一般只针对静态资源设置,对于动态网页不用设置缓存时间

  • 在Nginx服务中,expires参数指定缓存时间

  • 当没有设置expires参数时,使用Fiddler进行抓包

[root@server2 ~]# vim /etc/nginx/nginx.conflocation ~ \.php$ {proxy_pass http://10.1.1.171;expires 1d;  ##添加此处代码}

四.日志分割

  • Nginx没有类似于Apache的cronlog日志分割处理功能,但是可以通过Nginx的信号控制功能脚本来实现日志的自动分割,并且将脚本加入到Linux的计划任务中去,让脚本在每天固定的时间执行,便可以实现切割功能
  • 编写脚本进行日志切割的思路
  • 设置时间变量
  • 设置保存日志路径将目前的日志文件进行重命名
  • 删除时间过长的日志文件
  • 设置cron任务,定期执行脚本自动进行日志分割
[root@server2 ~]# vim /opt/fenge.sh 
#!/bin/bash
d=$(date -d "-1 day" "+%Y%m%d")
logs_path="/var/log/nginx"
pid_path="/run/nginx.pid"
[ -d $logs_path ] || mkdir -p $logs_path   //创建日志文件目录
mv /var/log/nginx/access.log ${logs_path}/test.com-access.log-$d  ##移动且重命名日志文件
kill -USR1 $(cat $pid_path)     ##重建新的日志文件 
find $logs_path -mtime +30 |xargs rm -rf    ##删除30天之前的日志文件

执行分割脚本

[root@server2 opt]# bash fenge.sh 
[root@server2 opt]# ls /var/log/nginx/  ##查看日志文件
access.log  error.log  test.com-access.log-20240308
##修改日期
[root@server2 opt]# date
2024年 03月 09日 星期六 20:10:00 CST
[root@server2 opt]# date -s 2024-03-12
2024年 03月 12日 星期二 00:00:00 CST
[root@server2 opt]# ls /var/log/nginx/
access.log  error.log  test.com-access.log-20240308  test.com-access.log-20240311
###设置crontab任务,每天零点执行脚本
[root@server2 ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@server2 ~]# crontab -l
0 0 * * * /opt/fenge.sh

五.设置连接超时

  • 在企业网站中为了避免同一个客户长时间占用连接,造成资源浪费,可以设置相应的连接超时参数,实现对连接访问时间的控制,可以修改配置文件nginx.conf,设置keepalive_timeout超时时间

  • 具体操作如下

keepalive_timeout 65 180;
//第一个参数指定了与客户端的keep-alive连接超时时间,服务器将会在这个时间后关闭连接
//第二个参数指定了在响应头Keep-Alive_timeout中的time值,这个头能够让一些浏览器主动关闭连接,这样服务器就不必关闭连接。如果没有这个参数,Nginx将不会发送Keep_Alive响应头
client_header_timeout 80;
//指定等待客户端发送请求头的超时时间
client_body_timeout 80;
//指定请求体读的超时时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/746112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Node.js从基础到高级运用】十二、身份验证与授权:JWT

身份验证与授权是现代Web应用中不可或缺的部分。了解如何在Node.js应用中实施这些机制,将使你能够构建更安全、更可靠的应用程序。本文将引导你通过使用JWT实现用户注册、登录和权限控制的过程。 JWT(Json Web Token) JWT是一种用于双方之间…

蓝桥杯深度优先搜索|剪枝|N皇后问题|路径之谜(C++)

搜索:暴力法算法思想的具体实现 搜索:通用的方法,一个问题如果比较难,那么先尝试一下搜索,或许能启发出更好的算法 技巧:竞赛时遇到不会的难题,用搜索提交一下,说不定部分判题数据很…

R语言tidycmprsk包分析竞争风险模型

竞争风险模型就是指在临床事件中出现和它竞争的结局事件,这是事件会导致原有结局的改变,因此叫做竞争风险模型。比如我们想观察患者肿瘤的复发情况,但是患者在观察期突然车祸死亡,或者因其他疾病死亡,这样我们就观察不…

基于单片机的太阳能热水器控制系统设计与仿真

目录 摘要 3 Controling system design and simulation of the solar water heater based on single chip microcomputer 4 第一章 前言 5 1.1设计背景和意义 5 1.2国内外的发展趋势 5 第二章 系统设计总览 7 2.1控制中心 7 2.2外围设备 7 第三章 系统硬件设计 8 3.1 总硬件的…

小程序路由跳转---事件通信通道EventChannel(二)

事件通信通道EventChannel实现两个页面之间的数据传输已在上篇小程序路由跳转—事件通信通道EventChannel(一)展开叙述,接下来讨论下多个页面(三个及以上)数据的通道如何构建。 本文重点:三个以上页面需将…

jenkin部署spring boot项目【从0到1】

写在前面,遇到的很多错误 本来想用docker启动Jenkins的,也这样做了,但是遇到了一个非常严重的问题,就是mvn命令在docker里面不生效,然后就修改文件,但是发现vi不存在,好的。接着用yum安装vi工具…

【Stable Diffusion】入门-02:AI绘画提示词+参数设置攻略

目录 1 提示词1.1 分类和书写方式1.1.1 内容型提示词1.1.2 标准化提示词1.1.3 通用模板 1.2 权重1.2.1 套括号1.2.2 数字权重1.2.3 进阶语法 1.3 负面提示词 2 参数详解2.1 Sampling steps2.2 Sampling method2.3 Width, Height2.4 CFG Scale2.5 Seed2.6 Batch count, Batch si…

Vue2 引入自己下载的SVG图像的方式

Vue2 引入下载的SVG图像的方式 Step 1:安装依赖 npm i svg-sprite-loader --saveStep 2:创建文件路径 // index.js import Vue from vue import SvgIcon from /components/SvgIcon// svg component// register globally Vue.component(svg-icon, Svg…

pytorch fasterrcnn-resnet50-fpn 神经网络 目标识别 应用 —— 逻辑概述

pytorch fasterrcnn-resnet50-fpn 神经网络 目标识别 应用 —— 逻辑概述 前提:工欲善其事必先利其器一、逻辑概述1 模型训练1) 训练数据2) 网络结构 2 推理识别 [下一章 推理识别代码讲解](https://blog.csdn.net/qq_42239488/article/details/126309847)&#xff…

《JAVA与模式》之抽象工厂模式

系列文章目录 文章目录 系列文章目录前言一、使用简单工厂模式的解决方案二、引进抽象工厂模式三、抽象工厂模式结构四、抽象工厂模式的优缺点前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看…

Hubspot 2023年推荐使用的11个AI视频生成器

视频是任何营销活动不可或缺的一部分;然而,如果你不懂编辑或时间紧迫,它们可能会很乏味,很难创建。一只手从电脑里伸出来,拳头碰到另一只手;代表AI视频生成器。 幸运的是,你可以利用许多人工智能…

【数据分析】数据分析介绍

专栏文章索引:【数据分析】专栏文章索引 目录 一、介绍 二、生活中的数据分析 1.无处不在的数据 2.为什么要进行数据分析? 三、数据挖掘案例 1.案例分析 一、介绍 数据采集:数据采集是指从不同来源收集原始数据的过程,包括…

【linux无root权限安装gcc8.3.0并指定自定义路径】(已解决)

【linux无root权限安装gcc8.3.0并指定自定义路径】(已解决) 本人情况:先介绍我的情况,我用的是公共服务器,并且没有root权限。我要安装某个包,但是系统的gcc版本太低,不匹配导致报错,所以我先无root安装了gcc10.1版本的,但是出现一个问题就是安装后我再去安装那个包,又…

考研失败, 学点Java打小工——Day3

1 编码规范——卫语句 表达异常分支时&#xff0c;少用if-else方式。   比如成绩判断中对于非法输入的处理&#xff1a; /*>90 <100 优秀>80 <90 良好>70 <80 一般>60 <70 及格<60 不及格*/Testpu…

Twitter广告投放技巧

明确目标受众&#xff1a; 确定你的目标受众&#xff0c;包括他们的兴趣、地理位置、年龄等。Twitter提供了广告定位选项&#xff0c;确保你的广告被展示给最相关的用户。 使用吸引人的图像和视频&#xff1a; 在Twitter上&#xff0c;图像和视频是引起关注的关键。确保你的广…

小程序开发平台源码系统:万能建站门店小程序功能 带完整的搭建教程以及代码包

在移动互联网时代&#xff0c;小程序以其独特的优势&#xff0c;迅速占领了市场的一席之地。然而&#xff0c;对于许多中小企业和个人开发者来说&#xff0c;缺乏专业的开发团队和技术支持&#xff0c;使得小程序开发成为一项难以逾越的技术门槛。小编给大家分享一款万能建站门…

linux 使用docker安装 postgres 教程,踩坑实践

linux 使用docker安装 postgres 教程 踩坑实践,安装好了不能远程访问。 防火墙已关闭、postgres 配置了允许所有ip 访问、网络是通的。端口也是开放的&#xff0c;就是不能用数据库链接工具访问。 最后发现是云服务器端口没开 ,将其打开 到这一步完全正确了&#xff0c;但是…

Python AI 之Stable-Diffusion-WebUI

Stable-Diffusion-WebUI简介 通过Gradio库&#xff0c;实现Stable Diffusion web 管理接口 Windows 11 安装Stable-Diffusion-WebUI 个人认为Stable-Diffusion-WebUI 官网提供的代码安装手册/自动安装不适合新手安装&#xff0c;我这边将一步步讲述我是如何搭建Python Conda…

【数据结构】单向链表的创建及4种应用

目录 前言 自定义“单向”链表类 1. 自定义一个链表类&#xff0c;并完成“初始化链表”、“添加元素&#xff08;头插法/尾插法&#xff09;”、“计算链表长度”操作&#xff1b; 自定义链表 向链表中插入元素&#xff08;头插法&#xff09; 向链表中插入元素&#xf…

2024年AI辅助研发:技术革新引领研发新纪元

文章目录 &#x1f4d1;前言一、AI辅助研发的技术进展二、行业应用案例三、面临的挑战与机遇四、未来趋势预测全篇总结 &#x1f4d1;前言 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已逐渐成为推动社会进步的重要力量。特别是在研发领域&#xff0c;A…