自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 收藏
  • 关注

原创 nginx:性能优化

优化方法论 (1)从软件层面提升硬件使用效率 ①增大CPU的利用率 ②增大内存的利用率 ③增大磁盘IO的利用率 ④增大网络带宽的利用率 (2)提升硬件规格 ①网卡:万兆网卡,例如10G,25G,40G等 ②磁盘:固态硬盘,关注IOPS和BPS指标 ③CPU:更快的主频,更多的核心,更大的缓存,更优的架构 ④内存:更快的访问速度 (3...

2020-06-29 16:44:18 190

原创 HTTP协议

HTTP2主要特性 (1)传输数据量的大幅减少(以二进制方式传输。标头压缩) (2)多路复用及相关功能(消息优先级) (3)服务器消息推送(并行推送)HTTP2.0核心概念 (1)连接Connection:1个TCP连接,包含一个或者多个stream (2)数据流Stream:一个双向通讯数据流,包含多条Message (3)消息Message:对应HTTP1中的请求或者响应,包含一条或者多条Frame (4)数据帧Frame:最小单位,以二...

2020-06-28 17:00:54 391

原创 nginx:缓存·

缓存是提升浏览器访问效率最有效的方法不仅要考虑nginx要作为缓存服务时的使用方法,还需要考虑浏览器中缓存生效的场景(因为浏览器中缓存是否生效,可以通过nginx指令控制,而浏览器的缓存对用户的体验提升也是最大的)浏览器缓存: 优点: (1)使用有效缓存时,没有网络消耗,速度最快 (2)即使有网络消耗,但对失效缓存使用304响应做到网络流量消耗最小化 缺点: 仅提升一个用户的体验nginx缓存 优点: ...

2020-06-27 20:06:38 896

原创 nginx:对上下游使用SSL连接

对下游使用证书1.ssl_certificate 指令 语法:ssl_certificate file; 默认:空 放置位置:http,server2.ssl_certificate_key 指令 语法:ssl_certificate_key file; 默认:空 放置位置:http,server验证下游证书1.ssl_verify_client 指令 语法:ssl_verify_client on | off | ...

2020-06-27 17:53:17 2976

原创 nginx :上游返回失败时的处理办法

前提:上游服务器没有向客户端发送任何内容1.proxy_next_upstream 指令(当出现错误时,nginx为其重新分配上游服务器) 语法:proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_ 429 | non_idempotent | off ... 默认:proxy_next_...

2020-06-27 17:02:38 1304

原创 nginx:反向代理模块-proxy模块

从客户端接受HTTP协议,转发给上游服务器也是HTTP协议

2020-06-26 19:19:54 4693

原创 upstream模块提供的变量

1.upstream_addr:上有服务器的IP地址,格式为可读的字符串,例如127.0.0.1:80802.upstream_connect_time:与上游服务器建立连接消耗的时间,单位为秒,精确到毫秒3.upstream_header_time:接收上游服务器发回响应中http头部所消耗的时间,单位为秒,精确到毫秒4.upstream_response_time:接收完整的上游服务器响应所消耗的时间,单位为秒,精确到毫秒5.upstream_http_名称:从上游服务器返回的响应头部的

2020-06-26 17:52:30 1991

原创 nginx:upstream_zone模块

upstream_zone模块:使用共享内存使负载均衡策略对所有worker进程生效模块:ngx_http_upstream_zone_module,默认编译进nginx,通过--without-http_upstream_zone_module禁用功能:分配出共享内存,讲其他upstream模块定义的负载均衡策略数据,运行时每个上游服务的状态数据存放在共享内存上,以对所有的nginx worker进程生效1.zone指令 语法:zone name[size] 默认:空 ...

2020-06-26 17:13:03 2080

原创 nginx:负载均衡算法

防止请求发送到错误的地址而收到错误的返回upstream_ip_hash模块(基于用户的IP地址来进行hash算法)模块:ngx_http_upstream_ip_hash_module,默认编译进nginx,通过--with-http_upstream_ip_hash_module禁用功能:以客户端的IP地址作为hash算法的关键字,映射到特定的上游服务器中。 对IPV4地址使用前3个直接作为关键字,对IPV6则使用完整地址 可以基于realip模块修改用于执行算法的IP地...

2020-06-26 12:00:51 138

原创 MySQL8.0.11安装并使用systemctl控制

1.下载安装包官网地址:https://downloads.mysql.com/archives/community/wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.17-linux-glibc2.12-i686.tar.xz2.解压xz –d mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz tar -xvf mysql-8.0.17-linux-glibc2.12

2020-06-24 14:42:59 1942

原创 centos7安装PHP

1.首先安装依赖yum -y install curl-devel libpng libpng-devel libjpeg-devel libcurl libcurl-devel openssl openssl-devel bzip2 2.在编译php时可能会出现libzip版本过低:configure: error: Please reinstall the libzip distributio 或configure: error: system libzip must be upgrad..

2020-06-23 21:48:37 381

原创 Linux下安装Apache 服务器并使用systemctl命令进行控制

安装依赖:yum install gcc expat-devel openssl-devel pcre pcre-devel libxm12-devel额外依赖:1.apr-1.7.0:wget https://mirror.bit.edu.cn/apache//apr/apr-1.7.0.tar.gz编译安装:cd apr-1.7.0./configure --prefix=/usr/local/dependence/apr // 我的编译安装地址makema.

2020-06-23 16:01:56 1764 2

原创 nginx:负载均衡

负载均衡:解决整个服务的可用性 水平扩展:成本最低基于水平扩展的算法(X轴):Round-Robin算法,least-connected算法但是并不能解决所有问题,比如数据量的问题,当单台应用上的数据已经非常大的时候,无论如何扩展,每一台服务的数据仍然非常大。此时,应该通过另外两种解决方案:从Y轴和Z轴上进行解决Y轴:(基于URL对功能进行分发)原先由一台服务处理的功能,现在由两台或多台进行处理(需要更改代码,做大量重构,成本高),能解决数据上升问题Z轴:将用户IP地址或其他信息映射

2020-06-22 16:53:52 140

原创 nginx:使用keepalive提升连接效率

HTTP协议的keepalive:对客户端keepalive行为控制指令功能:多个HTTP请求通过复用TCP连接,实现以下功能。 (1)减少握手次数 (2)通过减少并发连接数减少了服务器资源的消耗 (3)降低TCP拥塞控制的影响Connection头部:取值为close或者keepalive,前者表示请求处理完即关闭连接,后者表示复用连接处理下一条请求Keep-Alive头部:其值为timeout=n,后面的数字n单位是秒,告诉客户...

2020-06-22 16:11:32 1203

原创 nginx:geo和geoip模块

一.根据IP地址范围匹配生成新变量:geo模块功能:基于已有的变量值生成新的变量值,根据客户端地址创建新变量ngx_http_geo_module:默认编译进nginx,通过--without-http_geo_module禁用1.geo指令语法:geo [$address] $variable{...}默认:空放置范围:http使用变量获得用户的地理位置:geoip模块功能:根据IP地址创建新变量ngx_http_geoip_module:默认没有编译进..

2020-06-22 15:39:15 583

原创 nginx:防盗链

简单有效的防盗链手段:referer模块(从浏览器中发起的请求)默认编译进nginx,通过--without-http_referer_module禁用目的:拒绝非正常网站访问我们站点资源场景:某网站通过url引用了你的页面,当用户在浏览器上点击url时,http请求的头部中会通过refer而头部,将该网站当前页面的url带上,告诉服务器本地请求是由这个页面发起的思路:通过referer模块,用invalid_referer变量根据配置判断referer头部是否合法invalid_.

2020-06-22 11:01:21 485

原创 nginx : HTTP框架提供的变量

1.arg_参数名:URL中某个具体参数的值2.query_string:预args变量完全相同3.args:全部URL参数4.is_args:如果请求URL中有参数则返回?否则返回空5.content_length:HTTP请求中标识包体长度的Content-Length头部的值6.content_type:标识请求包体类型的Content_Type头部的值7.uri:请求的URL(不同于URL,不包括?后的参数)8.document_rui:与uri完全相同9.reque

2020-06-21 21:43:41 1432

原创 牛客小白月赛26:I-恶魔果实

题目链接:I-恶魔果实题意:牛牛得到了一堆神奇的恶魔果实,每个恶魔果实都给了牛牛一个改变数字的能力,可以把数字a变成数字b,现在牛牛有一个数字x,他想知道吃完这n个恶魔果实后,他可以把数字x变成多少种的数。注:每一个恶魔果实的能力可以重复使用多次,当然也可以不用,存在相同能力的恶魔果实.解题思路: 很明显,每个数能换到其他数的乘积就是答案,直接用三重for循环判断#include<bits/stdc++.h> #define ll long longusing ..

2020-06-21 10:01:26 340 1

原创 牛客小白月赛26:A-牛牛爱学习

题目链接:A-牛牛爱学习题意:疫情期间,牛牛宅在家里无事可做,于是就在网上买了n本书,每本书都有一个知识值为ai。每读一本书,牛牛的知识力就会上升ai点。当然了,因为牛牛的精力也是有限的,如果同一天连续读k本书,获得的知识力只能增加ai-k+1点。比如第一天看了知识值为5的书,那么牛牛会获得5点知识力,如果这一天在继续看另一本知识值为5的书,只能获得4点知识力,如果看了前面两本书后在继续看一本知识值为2的书,就只能获得0点知识力。牛牛想知道如果他要获得m点知识力,最少需要看几天。注意:看书不需要

2020-06-21 09:29:30 434

原创 nginx:HTTP过滤模块的调用流程

在content阶段时,会生成返回给用户的响应内容,对用户的响应内容,实际上还要做加工处理,HTTP过滤模块就是对响应内容做加工处理的。就是在content阶段之后,log阶段之前去介入请求处理gzip_filter 必须要在 copy_filter模块之后。gzip_filter需要对内存中的内容做压缩copy_filter把文件中的内容拷贝一份到内存中,供gzip进行压缩...

2020-06-20 17:16:18 365

原创 nginx:access日志的详细用法

ngx_http_log_module模块(无法禁用)生效阶段:log阶段功能:将HTTP请求相关信息记录到日志。1.log_format指令语法:log_format name [escape=default | json | none]string;默认:log_format combined "...";放置位置:http默认的combined日志格式:log_format combined '$remote_addr-$remote_user[$time_...

2020-06-20 16:41:40 800

原创 nginx : 提升多个小文件性能的concat模块

ngx_http_concat_module模块(阿里巴巴提供)发挥范围:content阶段功能:一次请求中返回多个文件的内容。当页面需要访问多个小文件时,把它们的内容合并到一次http响应中返回,提升性能模块开发者Tengine网址链接--add-module=../nginx-http-concat/使用:在URL后加上??,后通过多个逗号分隔文件如果还有参数,则在最后通过?添加参数1.concat指令(选择是否启用)语法:concat :on | off;默认...

2020-06-20 15:21:23 421

原创 nginx: index模块和autoindex模块

ngx_http_index_module模块功能:指定/访问时返回的index文件内容1.index指令语法:index file.....;默认:index index.html放置位置:http,server,locationautoindex模块功能:当URL以/ 结尾是,尝试以html/xml/json/jsonp等格式返回root/alias中指向目录的目录结构ngx_http_index_module默认编译进nginx 通过--with-ht...

2020-06-20 12:17:30 1324

原创 nginx:static模块

static模块static模块实现了root/alias功能时,发现访问目标是目录,但URL末尾未加/时,会返回301重定向1.server_name_in_redirect指令语法:server_name_in_redirect on | off;默认:server_name_in_redirect off;放置位置:http,server,location2.port_in_redirect指令语法:port_in_redirect on | off;...

2020-06-20 11:27:30 409

原创 nginx:实时流量拷贝mirror模块

ngx_http_mirror_module模块实时流量拷贝,precontent阶段的mirror模块默认编译进nginx模块,通过--without-ngx_http_mirror_module禁用模块功能: 创造一份镜像流量,生产环境中处理一些请求,把他们同步的复制一份到测试环境中或者开发环境中做处理1.mirror指令 mirror uri | off默认:mirror off;放置位置:http,server,location2.mirror_re...

2020-06-20 09:19:57 884

原创 nginx:按序访问资源的try_files模块

ngx_http_try_files_module模块默认编译到nginx中的,没有办法取消precontent阶段生效的try_files指令功能: 依次试图访问多个url对应的文件(由root或alias指令指定),当文件存在时,直接返回文件内容,如果所有文件都不存在,则按最后一个URL或者code返回.1.try_files指令(1)try_files file .....uri(2)try_files file......code默认:空放置位置...

2020-06-20 09:04:06 214

原创 nginx:使用第三方做权限控制的auth_request模块

auth_request模块原理: 收到请求后生成子请求,通过反向代理技术把请求传递给上游服务功能: 向上游的服务转发请求,若上游服务返回的状态码是2xx,则继续执行,若上游服务返回的是401或403,则将响应返回给客户端。默认不编辑进nginx模块 --with-http_auth_request_module1.auth_request uri | off默认:auth_request off;放置位置:http,server,location2.aut...

2020-06-20 08:25:08 2796

原创 nginx:对用户名密码做限制的auth_basic模块

默认编译进nginx 通过--without-http_auth_basic_module禁用功能功能:基于HTTP Basic Authentication协议进行用户名密码的认证。1.auth_basic指令 auth_basic string|off 默认:auth_basic off;放置位置:http,server,location,limit_except2.auth_basic_user_file 指令 auth_basic_user_fi...

2020-06-19 22:21:32 859

原创 nginx:对ip做限制的access模块

ngx_http_access_module模块生效阶段:NGX_HTTP_ACCESS_PHASE阶段模块:http_access_module默认编译进nginx,通过--without-http_access_module来禁用生效范围:进入access阶段前不生效1.allow 指令allow address |CIDR | unix: | all;默认:空放置位置:http,server,location,limit_except2.deny指令...

2020-06-19 21:44:24 187

原创 nginx:对请求做限制的limit_req模块

limit_req模块生效阶段:NGINX_HTTP_PREACCESS_PHASE阶段模块:http_limit_req_module默认编译进nginx,通过--without-http_limit_req_module来禁用生效算法:leaky bucket算法生效范围:(1)全部worker进程(基于共享内存)(2) 进入preaccess阶段前不生效1.limit_conn_log_level指令(限制发生时的日志级别)limit_conn_l...

2020-06-19 21:19:34 454

原创 nginx:对连接做限制的limit_conn模块

limit_conn模块生效阶段:NGINX_HTTP_PREACCESS_PHASE阶段模块:http_limit_conn_module默认编译进nginx,通过--without-http_limit_conn_module来禁用生效范围: (1)全部worker进程 (2) 进入preaccess阶段前不生效 (3)限制的有效性依赖于key的设计:依赖postread阶段的realip模块取得真实ip1.limit_conn_zone 指令 ...

2020-06-19 21:10:05 1059

原创 nginx中rewrite模块

1.return指令: (1)return code text (code为状态码) (2)return code URL (code为状态码) (3)return URL返回状态码nginx自定义 : 444 :关闭连接HTTP1.0标准: 301:http1.0永久重定向 302::临时重定向,禁止被缓存HTTP1.1标准: 303:临时重定向,允许改变方法,禁止被缓存 307:临时重定向,不允许改变方法,...

2020-06-19 16:19:29 148

原创 nginx 如何获取用户的真实IP 之realip模块

如果访问的服务器有CDN,那么CDN会获取到用户的真实IP,将用户的真实IP封装到X-Forwarded-For中,在设置到X-Real-IP中X_Forwarded_For:根据访问顺序,依次添加IP地址,也就是记录代理信息X_Real_IP:一般只记录真实发出请求的客户端IP...

2020-06-19 11:56:23 1317

原创 nginx处理HTTP请求的11个阶段

执行是有顺序的。比如limit_req和limit_conn同时处理请求时,都有返回值,此时会使用limit_req的返回值。在同一阶段中,模块可能被前一个模块执行而跳过当前模块。

2020-06-19 09:34:35 171

原创 nginx指令

1.Listen指令 (1)监听地址 Listen 127.0.0.1 (2)监听端口 Listen 80 (3)监听地址加端口 Listen 127.0.0.1:80 (4)监听socket Listen /var/local/nginx.sock (只应用于本机)...

2020-06-18 17:44:50 133

原创 nginx加载动态模块

不使用动态模块时:使用动态模块如果需要扩展动态库,只需重新编译动态库,进行替换,然后重新加载配置文件就可以。不用将nginx源码也重新进行编译不是所有的nginx模块都可以以动态模块方式加入nginx...

2020-06-18 17:25:21 838

原创 Nginx容器

1.数组2.链表3.队列4.哈希表哈希表配置: Bucket size Max size5.红黑树首先是个二叉树,查找二叉树(是有顺序的),有可能退化成一个链表红黑树的高度不会超过2倍的log(n)增删改查算法复杂度O(log(n))遍历复杂度O(n)6.基数树...

2020-06-18 16:27:47 118

原创 worker进程协同工作的关键:共享内存

共享内存:跨worker进程通讯 打开了一块内存,多个worker进程可以同时访问,包括读取和写入。问题: 1.锁。多个worker进程同时操作一块内存,就会出现竞争关系2.slab内存管理器

2020-06-18 15:50:09 542

原创 Nginx的请求切换

1:在通常的服务器里如appache 等 ,都是需要再进程间切换,个人理解都需要内核态切换(也就是操作系统间的进程调度) ,每次切换可能需要5微秒 但是如果上万甚至几十万的进程的话 消耗是成指数级的2:nginx 不需要再内核态里切换,而是直接在用户态做链接切换降低了性能消耗,使得CPU少做无用功3:如果让linux给于nginx里的worker更大的时间切片的话,8毫秒-800毫秒 这样nginx会处理速度更快...

2020-06-18 14:54:26 469 2

原创 Nginx模块初识

Nginx模块需要提前编译进Nginx的二进制文件中了解模块配置项模块何时被使用提供哪些变量nginx模块官方文档

2020-06-18 12:03:18 268

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除