Nginx-调度器、优化

Nginx调度器

一、HTTP调度

1、反向代理语法格式

http {upstream webserver {    # 定义源服务器组#ip_hash;server 192.168.88.100:80 weight=2;server 192.168.88.200:80 down;server 192.168.88.101:80 max_fails=2 fail_timeout=30;}server {listen       80;server_name  _;location / {proxy_pass http://webserver;    # 调用服务组}}
}

2、调度算法

轮循(默认):逐一循环调度

weight:指定轮循几率,权重值和访问比率成正比

ip_hash:根据客户端IP分配固定的后端服务器

least_conn:新的请求分配给压力最小的服务器

3、服务器组主机状态

down:表示当前server暂时不参与负载

max_fails:允许请求失败的次数(默认为1)

fail_timeout:max_fails次失败后,暂停提供服务的时间

二、TCP/UDP调度

1、模块

  • ngx_stream_core_module模块
  • 使用--with-stream开启该模块

2、语法格式

stream {upstream backend {server 192.168.88.100:22;server 192.168.88.200:22;}server {listen 12345;proxy_pass backend;}
}http {
... ...
}

Nginx优化

一、HTTP错误代码

返回码描述
200一切正常
301永久重定向
302临时重定向
400请求语法错误
401访问被拒绝(账户或密码错误)
403资源不可用,通常由于服务器上文件或目录的权限设置导致
403禁止访问:客户端的IP地址被拒绝
404无法找到指定位置的资源(Not Found)
414请求URI头部太长
500服务器内部错误
502服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答(Bad Gateway)

1、自定义错误页面

http {
fastcgi_intercept_errors on;
server {
error_page 404 /40x.html;error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}
}
}

二、Nginx状态页面

1、status模块

--with-http_stub_status_module开启模块功能

可以查看Nginx连接数等信息

如果要添加模块,但不想删除之前nginx数据,可以将nginx源码目录下的objs目录中的nginx文件拷贝到nginx的sbin目录下替代现有主程序,然后killall nginx 再重启即可

./configure --with-stream --with-http_stub_status_module
make
killall  nginx
cp objs/nginx /usr/local/nginx/sbin/
/usr/local/nginx/sbin/nginxcat /usr/local/nginx/conf/nginx.conf
location /status {stub_status on;
}

三、优化nginx并发量

1、常用压力测试工具

ab -c 并发数 -n 总请求数 URL

2、全局配置优化

调整进程数量

#user  nobody;
worker_processes  1;    # 建议与CPU核心数一致

3、EVENT模块优化

网站常见指标:并发、PV、UV

max_clients=worker_processes * worker_connections

注意修改系统ulimit限制/etc/security/limits.conf

events {worker_connections  1024;    # 每个worker最大并发连接数
}

4、优化Linux内核参数(最大文件描述符数量)

# 查看最大文件数量
[root@proxy ~]# ulimit -n
# 临时设置最大文件数量
[root@proxy ~]# ulimit -n 100000[root@proxy ~]# vim /etc/security/limits.conf.. ..
*               soft    nofile            100000
*               hard    nofile            100000
#该配置文件分4列,分别如下:
#用户或组    硬限制或软限制    需要限制的项目   限制的值

四、优化Nginx数据包头缓存,支持超长地址

优化前,使用脚本测试超长头部请求是否能获得响应

默认情况下nginx无法支持长地址栏,会报414错误

[root@proxy ~]# cat buffer.sh 
#!/bin/bash
URL=http://192.168.99.5/index.html?
for i in {1..5000}
doURL=${URL}v$i=$i
done
curl $URL                              # 经过5000次循环后,生成一个超长的URL地址
[root@proxy ~]# ./buffer.sh
.. ..
<center><h1>414 Request-URI Too Large</h1></center>        #访问失败

修改Nginx配置文件,增加数据包头部缓存大小

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
client_header_buffer_size    200k;        # 请求包头信息的缓存大小    
large_client_header_buffers  4 200k;      # 大请求包头部信息的缓存个数与容量
.. ..
}
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload

优化后,使用脚本测试超长头部请求是否能获得响应

[root@proxy ~]# ./buffer.sh

五、浏览器本地缓存静态数据

修改配置文件,定义对静态页面的缓存时间

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
server {listen       80;server_name  localhost;location / {root   html;index  index.html index.htm;}
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires        30d;            # 定义客户端缓存时间为30天
}
}
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload

六、配置网站限流限速

1、定义limit_rate限制

[root@web1 nginx]# vim /usr/local/nginx/conf/nginx.conf
http {
...    limit_rate 100k;                # 全局限速server {limit_rate 200k;            # 虚拟主机限速listen 80;server_name www.b.com;root html;index index.html;location /file_a {limit_rate 300k;        # file_a目录限速300k}location /file_b {limit_rate 0k;          # file_b目录不限速}}

2、创建测试目录

[root@web1 nginx]# mkdir html/file_a
[root@web1 nginx]# mkdir html/file_b

3、创建测试文件

[root@web1 nginx]# dd if=/dev/zero of=html/test.img  bs=100M count=1
[root@web1 nginx]# dd if=/dev/zero of=html/file_a/test.img  bs=100M count=1
[root@web1 nginx]# dd if=/dev/zero of=html/file_b/test.img  bs=100M count=1

4、下载测试

wget www.b.com/test.img
wget www.b.com/file_a/test.img
wget www.b.com/file_b/test.img

七、防盗链

valid_referers指令可以检测被访问资源从哪个地址来

1、添加防盗链测试语句

[root@web1 nginx]# vim /usr/local/nginx/conf/nginx.conf
server {
...    valid_referers none 192.168.99.100;    # 如果请求头中的referer字段包含者地址是99.100或者没有referer字段则有效,if ($invalid_referer){                  # 如果上述测试无效则条件成立return 403;                         # 返回错误提示}
...
}

2、web1编写测试页面

[root@web1 nginx]# cat html/index.html
web1
测试页面  --
<a href="http://192.168.99.100/nr.html">内容</a>[root@web1 nginx]# cat html/nr.html
web1内容页面

3、web2编写测试页面

[root@web2 nginx]# cat html/index.html
web2
测试页面  --
<a href="http://192.168.99.100/nr.html">内容</a>

4、测试

从192.168.99.100主页点内容可以访问,但从99.200点不可以

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

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

相关文章

Mysql底层原理六:InnoDB 数据页结构

1.行格式 1.1 Compact行格式 1.1.1 示意图 1.1.2 准备一下 1&#xff09;建表 mysql> CREATE TABLE record_format_demo (-> c1 VARCHAR(10),-> c2 VARCHAR(10) NOT NULL,-> c3 CHAR(10),-> c4 VARCHAR(10)-> ) CHARSETascii ROW_FORMATCOM…

怎么将静图变成gif?告诉你三步快速制作

想要将jpg格式的静图变成gif格式的动图时要怎么操作呢&#xff1f;在这个飞速发展的数字媒体时代&#xff0c;经常会在网络上分享有趣的动态图片。当我们想要将自己手中的jpg图片变成gif动图的时候怎么实现呢&#xff1f;很简单&#xff0c;通过使用gif图片制作&#xff08;htt…

Vue 打包自动清理缓存

在Vue开发中遇到打包部署之后总是要手动清除浏览器缓存数据的问题&#xff0c;此问题可以用下方式&#xff1a; 1、package.json文件中有一个管理版本号属性&#xff1a;version&#xff0c;在我们每次打包部署之前修改当前版本号 2、在入口文件main.js文件中&#xff0c;加入版…

windows环境下实现ffmpeg本地视频进行rtsp推流

摘要&#xff1a;有时候服务端&#xff08;如linux&#xff09;或者边缘端&#xff08;jetson盒子&#xff09;需要接受摄像头的视频流输入&#xff0c;而摄像头的输入视频流一般为rtsp&#xff0c;测试时需要搭建摄像头环境&#xff0c;很不方便&#xff0c;因此需要对本地视频…

YOLOV8注意力改进方法:DoubleAttention(附代码)

原论文地址&#xff1a;原论文地址 DoubleAttention网络结构的优点在于&#xff0c;它能够有效地捕获图像中不同位置和不同特征的重要性&#xff0c;从而提高了图像识别和分割的性能。 论文相关内容介绍&#xff1a; 论文摘要&#xff1a;学习捕捉远程关系是图像/视频识别的…

springboot系列-api接口请求实现

springboot HTTP请求接口实现 基于springboot 2.6.6 代码地址&#xff1a;github仓库地址 更多系列教程请关注公众号’coderlike’ 如果觉得有帮助希望能关注下公众号 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-b…

PyCharm 2024.1 版本带来了一系列重要的更新和新特性

Hugging Face 模型和数据集的文档预览&#xff1a; 可直接在 IDE 中查看 Hugging Face 模型和数据集的文档&#xff0c;无需离开编辑环境。 本地全行代码补全&#xff1a; 对于前端框架&#xff0c;如 JavaScript 和 TypeScript&#xff0c;PyCharm 现在支持基于机器学习的全行…

魔众 文库配置异步转换

同步转换 系统默认使用同步转换&#xff0c;即用户上传文档提交接口瞬间&#xff0c;系统会立即进行转换。 同步转换容易造成页面卡顿&#xff0c;转换时间超长的情况下&#xff0c;系统接口会超时。 异步转换 系统支持异步转换&#xff0c;即用户上传文档提交接口瞬间&…

【算法】合并两个有序数组 - 双指针

题目 两个有序整数数组 nums1 和 nums2 及他们的元素个数 m、n&#xff0c;将 nums2 合并到 nums1 中&#xff0c;结果依然有序。 nums1 长度默认为 m n&#xff0c;没有元素的位置用 0 补齐。 原理 定义三个指针&#xff0c;分别指向 nums1 的最大元素(p1)、nums2 的最大元…

Elasticsearch索引之嵌套类型:深度剖析与实战应用

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! Elasticsearch是一个基于Lucene的搜索服务器&#xff0c;它提供了一个分布式、多租户能力的全文搜索引擎&#xff0c;并带有一个基…

烧坏两块单片机,不知道原因?

没有看你的原理图&#xff0c;以下是造成烧毁芯片的几个环节&#xff1a; 1. 最大的可能性是你的单片机电机控制输出与电机驱动电路没有隔离。 我的经验&#xff0c;使用STM32控制电机&#xff0c;无论是直流电机脉宽调制&#xff0c;还是步进电机控制&#xff0c;控制电路与…

libpcap抓包的原理是什么?

libpcap是一个开源库&#xff0c;用于捕获计算机网络上的数据包。它是网络数据包捕获的事实标准&#xff0c;并被许多工具使用&#xff0c;包括Wireshark和Tcpdump。libpcap的工作原理可以概括为以下几个关键点&#xff1a; 用户空间数据包捕获&#xff1a;libpcap在用户空间运…

PCA算法(Principal Component Analysis)揭秘

经典PCA算法 PCA算法的应用包括降维、有损数据压缩、特征抽取、数据可视化等。目前PCA算法有两个通用定义&#xff0c;能殊途同归&#xff0c;得到相同的结果。一方面&#xff0c;我们可以用正交投影来定义PCA&#xff0c;即将数据投影到更低维的线性子空间&#xff0c;也被称…

DolphinScheduler 答案整理,最新面试题

DolphinScheduler的架构设计是怎样的&#xff1f; DolphinScheduler的架构设计主要分为四个层次&#xff1a;前端界面层、API服务层、调度层和执行层。 1、前端界面层&#xff1a; 提供任务的定义、流程的设计、监控等功能&#xff0c;用户通过前端界面操作整个系统。 2、AP…

K倍区间-C++题解

题目描述 给定一个长度为 N 的数列&#xff0c;A1, A2,…AN​&#xff0c;如果其中一段连续的子序列 Ai,Ai1⋯Aj​ ( i ≤j ) 之和是 K 的倍数&#xff0c;我们就称这个区间 [i, j]是 K 倍区间。 你能求出数列中总共有多少个 K倍区间吗&#xff1f; 输入描述 第一行包含两个…

“揭秘循环购模式:快消品行业复购利器

大家好&#xff0c;我是吴军&#xff0c;来自一家专注于软件开发与商业模式设计的公司。我们的核心业务是构建商城系统&#xff0c;并为各企业提供全方位的商业模式解决方案。至今&#xff0c;我们已经成功打造了超过两百种独特的商业模式&#xff0c;助力众多企业实现商业目标…

C++的并发世界(九)——条件变量

0.绪论——单例模型 单例设计模式是一种常见的设计模式&#xff0c;用于确保某个类只能创建一个实例。由于单例实例是全局唯一的。因此在多线程环境中使用单例模式时,需要考虑线程安全的问题。 1.消费者设计模式 2.condition_variable使用步骤 ①准备好信号量 std::conditio…

Linux系统Docker部署Apache Superset并实现公网实时访问本地数据

文章目录 前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透&#xff0c;实现公网访问3. 设置固定连接公网地址 前言 Superset是一款由中国知名科技公司开源的“现代化的…

linux中常用的查看日志命令

linux中常用的查看日志命令 tail命令 tail命令主要用于查看文件的末尾内容。 * **基本语法**&#xff1a;tail [选项] 文件 * **常用选项**&#xff1a; - -n [行数]&#xff1a;显示文件的最后指定行数。例如&#xff0c;tail -n 10 filename会显示文件的最后10行。 - …

电商API接口告诉你中国跨境电商何以“一路繁花”?

3月31日&#xff0c;启程跨境华东中心仓突破单日自营订单5000单&#xff0c;刷新连云港市跨境进口单日纪录。一季度&#xff0c;连云港市纳入“点点通”公共服务平台统计的跨境电商交易额达2.06亿元&#xff0c;同比增长77.03%。 连云港的“景象”只是中国跨境电商业态蓬勃发展…