首页 > 系统相关 >Linux系统架构----Nginx的服务优化

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

时间:2024-03-13 21:29:24浏览次数:22  
标签:log nginx server2 ---- Nginx Linux 日志 root

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.conf
        location ~ \.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;
//指定请求体读的超时时间

标签:log,nginx,server2,----,Nginx,Linux,日志,root
From: https://blog.csdn.net/m0_54408283/article/details/136635135

相关文章

  • Websocket服务监听收发消息
    1.pom依赖坐标<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>2.项目配置端口和项目包名application.propertiesserver.p......
  • 电子电路基础
    原子结构和电荷物质的最小组成单位原子原子模型=质子(+)电子(-)中子(中性)组成原子核=质子+中子原子核在原子中英,直径很小。原子的直径则很大原子的质子和电子数量一般是一致的,所以物质会呈现电中性电荷:电荷是构成物体所带的正电或者负电电子带负电,质子带正电中......
  • docker部署nginx
    1拉取nginx镜像dockerpullnginx2部署nginx方式一:直接部署dockerrun-id--namenginx-p80:80nginx方式二:映射index.html部署#在root文件夹下创建html文件夹mkdirroot#进入html文件夹创建index.html文件cdhtmlvimindex.html#自定义首页内容'''<h1>......
  • 1.2引用
    1、引用的基本使用引用的作用:给变量起别名语法:数据类型&别名=原名为什么a输出的也是20?因为不管我们呢是用原名a来操作它,还是用别名b来操作它,我们所修改的都是同一块内存。回忆:操作系统中讲的共享2、引用的注意事项引用必须初始化引用在初始化后,不可以再改变了!点击......
  • FPGA的FIFO部分的知识点
    看的小梅哥的新视频,FIFO这边讲的不太清楚,换正点原子的fifo听一下。后面的以太网和HDMI有空也看一下正点原子的,主要是想快速看zynq的知识,而且现在学的很多都是模仿抄代码,真正自己来还是得工程中实际应用的时候才会使用学习FIFO,先入先出,像队列。常用于数据的缓存,因为数据的读写带......
  • 【Django开发】前后端分离美多商城项目第1篇:美多商城【附代码文档】
    美多商城项目4.0文档完整教程(附代码资料)主要内容讲述:美多商城,项目准备,商业模式介绍,开发流程,需求分析,项目架构,创建工程,1.在git平台创建工程1.B2B--企业对企业,2.C2C--个人对个人,3.B2C--企业对个人,4.C2B--个人对企业,5.O2O--线上到线下,6.F2C--工厂到个人,7.B2B2C--企业--企业--......
  • 作页二:个人项目
    这个作业属于哪个课程软件工程2024-广东工业大学这个作业要求在哪里软件工程2024-班级博客这个作业的目标开发个人项目,实现论文查重githubgitcode仓库地址:https://gitcode.com/wdwwdw/3122004405/tree/main计算模块接口的设计与实现过程使用hcaks对中......
  • [20240312]sqlplus define数据类型问题.txt
    [20240312]sqlplusdefine数据类型问题.txt--//编写sql脚本遇到的问题,通过例子说明。1.环境:SCOTT@book>@ver1111PORT_STRING                   VERSION       BANNER------------------------------------------------------------------------......
  • 111. 二叉树的最小深度c
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/intmin(inti,intj){if(i>j)returnj;returni;}intminDepth(structTreeNode*root){......
  • [20240313]toad gather_plan_statistics执行计划相关问题.txt
    [20240313]toadgather_plan_statistics执行计划相关问题.txt--//自己现在已经很少使用toad,使用也是作为辅助功能,毕竟图形界面能更快的操作显示信息.--//昨天遇到一个问题,自己当时没有反映过来,浪费点时间,做一个记录避免以后再次犯浑.--//我一般在toad的sql编辑界面下尽可能看......