从小白到大神之路之学习运维第68天-------Nginx企业级优化与防盗链

news2024/11/25 15:21:57

第三阶段基础

时  间:2023年7月26日

参加人:全班人员

内  容:

Nginx企业级优化与防盗链

目录

一、配置Nginx隐藏版本号

二、修改Nginx用户与组

​三、配置Nginx网页缓存时间

四、实现Nginx的日志切割

五、配置Nginx实现连接超时

六、更改Nginx工作进程数

七、配置Nginx实现网页压缩功能


一、配置Nginx隐藏版本号

在生产环境中,需要隐藏Nginx等服务的版本信息,以避免安全风险:

curl -I 192.168.100.132   获取nginx的信息

1、修改源码包

yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

useradd -M -s /sbin/nologin nginx

tar xf nginx-1.14.2.tar.gz -C /usr/src/

cd /usr/src/nginx-1.14.2/

vim src/core/nginx.h

配置如下:

13 #define NGINX_VERSION  "7.0.0 "随便改,也可删除

14 #define NGINX_VER      "IIS/" NGINX_VERSION

配置、编译、安装

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install

/usr/local/nginx/sbin/nginx   启动

netstat -anpt |grep nginx     查看端口

curl -I 192.168.100.132

2、修改配置文件

vim /usr/local/nginx/conf/nginx.conf

配置如下:

 28     server_tokens off;

/usr/local/nginx/sbin/nginx -t

killall -HUP nginx

curl -I http://192.168.100.132

   如果php配置文件中配置了fastcgi_param SERVER_SOFTWARE选项,则编辑php-fpm配置文件,将fastcgi_param SERVER_SOFTWARE对应值修改为fastcgi_param SERVER_SOFTWARE nginx。

二、修改Nginx用户与组

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

1、编译安装时指定

useradd -M -s /sbin/nologin nginx

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install

2、修改配置文件

vim /usr/local/nginx/conf/nginx.conf

 配置如下:

2 user  nginx nginx;

killall -HUP nginx

ps aux |grep nginx

三、配置Nginx网页缓存时间

 当Nginx将网页数据返回给客户端后,可设置资源在客户端缓存的时间,以方便客户端在日后进行相同内容的请求时直接返回,以避免重复请求,加快了访问速度,一般针对静态网页进行设置,对动态网页不用设置缓存时间。可在Windows客户端中使用fiddler查看网页缓存时间。

设置方法:可修改配置文件,在http段、或server段、或者location段加入对特定内容的过期参数。

vim /usr/local/nginx/conf/nginx.conf

配置如下:

49         location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ {

50             expires 1d;

51         }

52    location ~ .*\.(js|css)$ {

53             expires 1h;

54         }

killall -HUP nginx

vim /usr/local/nginx/html/index.html

配置如下:

15 <hr />

16 <img src="linux.png" />

抓包查看:

四、实现Nginx的日志切割

Nginx日志:

ls -l /usr/local/nginx/logs/

总用量 12

-rw-r--r-- 1 root root 3584 3月  31 10:02 access.log #访问日志

-rw-r--r-- 1 root root 1575 3月  31 10:02 error.log #错误日志

-rw-r--r-- 1 root root    5 3月  31 09:27 nginx.pid

编写日志切割脚本:

vim /opt/cut_nginx_log.sh

配置如下:

chmod +x /opt/cut_nginx_log.sh   授予执行权限

crontab -e

配置如下:

0 0 * * * /opt/cut_nginx_log.sh

/opt/cut_nginx_log.sh   执行脚本

ls /usr/local/nginx/logs/backup/

killall -9 nginx

rm -rf /usr/local/nginx/logs/nginx.pid

/opt/cut_nginx_log.sh

tail -1 /var/log/messages 

面试题讨论:

说明Nginx的访问日志记录在access.log文件中。

如果将access.log重命名为a.log时,新产生的日志写到哪儿?为什么?

答案:日志将会写入到a.log文件中,因为重命名后文件的Inode没有变化,文件系统是根据Inode查找文件的。

如果此时将Nginx服务重启后,新产生的日志写到哪儿?为什么?

答案:日志将会写入到新的access.log文件中,因为重启时会加载Nginx的配置文件,配置文件中是通过文件名指定日志的,所以会创建新的日志。

五、配置Nginx实现连接超时

保持连接(长连接)

 在进行HTTP连接前要先建立TCP连接(TCP 3次握手),再建立HTTP连接,当HTTP资源请求结束后,会断开HTTP连接,再断开TCP连接(TCP 4次挥手)。

很多情况下用户访问网站并不是只访问一个资源,可能会打开很多页面,访问很多资源,如果每个资源的访问都这么繁琐,将会造成用户访问慢,服务器压力过大的问题。

 解决如上问题的最好办法是开启网站的保持连接功能。在企业网站中,为了避免同一个客户长时间占用连接,造成服务器资源浪费,可以设置相应的连接超时参数,实现控制连接访问时间。

keepalived_timeout:设置连接保持超时时间,一般可只设置该参数,默认为65秒,可根据网站的情况设置,或者关闭,可在http段、server段、或者location段设置。

client_header_timeout:指定等待客户端发送请求头的超时时间。

client_body_timeout:设置请求体读取超时时间。

注意:若出现超时,会返回408报错

vim /usr/local/nginx/conf/nginx.conf

配置如下:

 34     keepalive_timeout  65;

 35     client_header_timeout 60;

 36     client_body_timeout 60;

killall -HUP nginx  重启nginx

六、更改Nginx工作进程数

在高并发场景,需要启动更多的nginx工作进程以保证快速影响,以处理用户的请求,避免造成阻塞。

修改配置文件的worker_processes参数,一般设置为CPU的核数

grep 'core id' /proc/cpuinfo | uniq | wc -l

vim /usr/local/nginx/conf/nginx.conf

如下培训:

  3 worker_processes  2;

/usr/local/nginx/sbin/nginx

ps aux | grep nginx | grep -v grep

配置CPU亲和性:

默认Nginx的多个进程可能跑在一颗CPU核心上,可以分配不同的进程给不同的CPU核心处理,充分利用硬件多核多CPU。在一台4核物理服务器,可以进行下面的配置,将进程进行分配。

worker_cpu_affinity  0001 0010 0100 1000;

同理:6台服务器就是

worker_cpu_affinity  000001 000010 000100 001000 010000 10000;

七、配置Nginx实现网页压缩功能

  Nginx的ngx_http_gzip_module压缩模块提供了对文件内容压缩的功能,允许nginx服务器将输出内容发送到客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,模块默认已经安装。

vim /usr/local/nginx/conf/nginx.conf

配置如下:

 38     gzip  on; //开启gzip压缩输出

 39     gzip_min_length 1k; //用于设置允许压缩的页面最小字节数

 40     gzip_buffers 4 16k; //表示申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来储存gzip压缩结果

 41     gzip_http_version 1.1; //设置识别http协议版本,默认是1.1

 42     gzip_comp_level 2; //gzip压缩比,1-9等级

 43 gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss; //压缩类型,是就对哪些网页文档启用压缩功能

 44     #gzip_vary  on;   //选项可以让前端的缓存服务器经过gzip压缩的页面

killall -HUP nginx   重启测试

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

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

相关文章

图为科技T501赋能工业机器人 革新传统工业流程

工业机器人已成为一个国家制造技术与科技水平的重要衡量标准&#xff0c;在2019年&#xff0c;中国工业机器人的组装量与产量均位居了全球首位。 当前&#xff0c;工业机器人被广泛用于电子、物流、化工等多个领域之中&#xff0c;是一种通过电子科技和机械关节制作出来的智能机…

让婚礼策划展示小程序成为你的必备利器

在当今互联网时代&#xff0c;微信小程序已经成为了很多企业和个人展示自己产品和服务的重要渠道。如果你想学习微信小程序开发&#xff0c;下面将为你介绍一些基本步骤。 首先&#xff0c;你需要注册并登录一个第三方小程序制作平台&#xff0c;比如乔拓云平台。这些平台提供了…

uiautomatorViewer无法获取Android8.0手机屏幕截图的解决方案

问题描述&#xff1a; 做APP UI自动化的时候&#xff0c;会碰到用uiautomatorViewer在Android 8.0及以上版本的手机上&#xff0c;无法获取到手机屏幕截图&#xff0c;无法获取元素定位信息的问题&#xff0c;会有以下的报 在低版本的Android手机上&#xff0c;则没有这个问题…

探索:Modbus TCP协议(应用层)

目录 一&#xff0c;Modbus起源 ModbusTCP协议格式 1,报文头 2,寄存器 3,功能码 练习&#xff1a; 工具软件使用 三方库的使用 【1】库的安装 1.库的安装配置 2.库的使用 【2】函数接口 【3】编程流程 代码实战 一&#xff0c;Modbus起源 起源&#xff1a; Modbus由Modicon公司…

【数据分享】1901-2022年1km分辨率逐月平均气温栅格数据(全国/分省/免费获取)

气温数据是我们最常用的气象指标之一&#xff0c;之前我们给大家分享过1950-2022年0.1 x 0.1精度的逐月平均气温栅格数据和逐年平均气温栅格数据&#xff08;均可查看之前的文章获悉详情&#xff09;&#xff01; 本次我们分享的是精度更高的气温栅格数据——1901-2022年1km分…

【数据分享】全国地级市1999—2020年工业企业数(Shp/Excel格式)

在之前的文章中&#xff0c;我们分享过基于2000-2022年《中国城市统计年鉴》整理的1999-2021年地级市的人口相关数据、各类用地面积数据、污染物排放和环境治理相关数据、房地产投资情况和商品房销售面积、社会消费品零售总额和年末金融机构存贷款余额&#xff08;可查看之前的…

[Golang] Viper原理以及详细使用案例

文章目录 什么是 Viper&#xff1f;基础配置引入依赖&#xff1a;动态监听原理分析&#xff1a;监听原理分析 Config.yaml文件配置Viper文件配置 什么是 Viper&#xff1f; 介绍&#xff1a;用于处理配置文件中解析和读取配置文件 优点&#xff1a;支持多种配置格式&#xff0…

办公软件巨头CCED、WPS迎来新挑战,新款办公软件已形成普及之势

办公软件巨头CCED、WPS的成长经历 众所周知&#xff0c;CCED和WPS是中国办公软件行业的两大知名品牌。 但它们的成长经历不是一蹴而就的&#xff0c;都是经历了漫长的发展过程的。 CCED是中国大陆早期的一款文本编辑器&#xff0c;它在上个世纪80年代末和90年代初非常流行。 …

Flutter Widget Life Cycle 组件生命周期

Flutter Widget Life Cycle 组件生命周期 视频 前言 了解 widget 生命周期&#xff0c;对我们开发组件还是很重要的。 今天会把无状态、有状态组件的几个生命周期函数一起过下。 原文 https://ducafecat.com/blog/flutter-widget-life-cycle 参考 https://api.flutter.dev/f…

低代码和零代码有哪些区别?

低代码开发的概念 低代码开发是一种新兴的软件开发方法&#xff0c;其核心是通过使用图形用户界面和可视化建模工具&#xff0c;来减少编写代码的工作量和技能要求。低代码开发平台通常提供了丰富的预定义组件和模板&#xff0c;可以帮助开发人员快速构建应用程序。开发人员只…

【雕爷学编程】Arduino动手做(173)---SG90舵机双轴云台模块

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

新思的DW ECC计算模块

参考文件&#xff1a;synopsys学习资料-dw_ecc.pdf 设计的模块&#xff1a;

一些需要用到的网址

https://npm.taobao.org/mirrors/chromedriver/ (谷歌浏览器镜像网址) 欢迎使用Markdown编辑器 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。…

Neo4j 集群和负载均衡

Neo4j 集群和负载均衡 Neo4j是当前最流行的开源图DB。刚好读到了Neo4j的集群和负载均衡策略&#xff0c;记录一下。 1 集群 Neo4j 集群使用主从复制实现高可用性和水平读扩展。 1.1 复制 集群的写入都通过主节点协调完成的&#xff0c;数据先写入主机&#xff0c;再同步到…

word中将合并后的多行拆分为原先的行数

word中将已经合并的多行拆分为原先的行数&#xff0c;我们不用刻意去数应该是多少行&#xff0c; 只需将拆分的行数不断增加&#xff0c;word会默认最大增加到合并前的行数。

redis 第二章

目录 1.持久化 2.主从复制 3.总结 1.持久化 通过 aof 和 rdb 将内存里的数据放到磁盘中 aof: rdb: 2.主从复制 将一台 redis 服务器的数据&#xff0c;复制到其他的 redis 服务器 3.总结 主从复制是高可用 redis 的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可…

UE UMG补充

Widget Switcher&#xff08;UI选择&#xff09; 通过该组件可以在同一个地方显示不同UI 可以通过蓝图改变显示的UI 在UI界面直接设置 ProgressBar(进度条) 可以用动画实现增长&#xff0c;更加自然 Animation 有绑定功能

具身智能controller---RT-1(Robotics Transformer)(上---方法介绍)

具身智能controller---RT-1&#xff08;Robotics Transformer&#xff09;&#xff08;上---方法介绍&#xff09; 相关链接摘要和简介相关工作与预备知识系统概述模型 RT-1: ROBOTICS TRANSFORMER模型 相关链接 github链接 主页链接&#xff08;包括论文和训练数据集&#xf…

fpga开发——蜂鸣器

蜂鸣器的原理 有源蜂鸣器和无源蜂鸣器 无源蜂鸣器利用电磁感应现象&#xff0c;为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜发声&#xff0c;接入直流电只能持续推动振膜而无法产生声音&#xff0c;只能在接通或断开时产生声音。无源蜂鸣器的工作原理与扬声…