首页 文章 精选 留言 我的

精选列表

搜索[nginx],共5972篇文章
优秀的个人博客,低调大师

《深入理解Nginx:模块开发与架构解析》一3.6 处理用户请求

3.6 处理用户请求 本节介绍如何处理一个实际的HTTP请求。回顾一下上文,在出现mytest配置项时,ngx_http_mytest方法会被调用,这时将ngx_http_core_loc_conf_t结构的handler成员指定为ngx_http_mytest_handler, 另外,HTTP框架在接收完HTTP请求的头部后,会调用handler指向的方法。下面看一下handler成员的原型ngx_http_handler_pt:typedef ngx_int_t (ngx_http_handler_pt)(ngx_http_request_t r);从上面这段代码可以看出,实际处理请求的方法ngx_http_mytest_handler将接收一个ngx_http_request_t类型的参数r,返回一个ngx_int_t(参见3

优秀的个人博客,低调大师

【官方文档】Nginx负载均衡学习笔记(二)负载均衡基本概念介绍

简介 负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台 ECS 的流量分发控制服务。负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 负载均衡主要有如下几个功能点: 负载均衡服务通过设置虚拟服务地址(IP),将位于同一地域(Region)的多台云服务器(Elastic Compute Service,简称ECS)资源虚拟成一个高性能、高可用的应用服务池;根据应用指定的方式,将来自客户端的网络请求分发到云服务器池中。 负载均衡服务会检查云服务器池中ECS的健康状态,自动隔离异常状态的ECS,从而解决了单台ECS的单点问题,同时提高了应用的整体服务能力。在标准的负载均衡功能之外,负载均衡服务还具备TCP与HTTP抗DDoS攻击的特性,增强了应用服务器的防护能力。 负载均衡服务是ECS面向多机方案的一个配套服务,需要同ECS结合使用。 核心概念 负载均衡服务主要有三个核心概念: LoadBalancer:负载均衡实例。 Listener:用户定制的监听器,定义了负载均衡策略和转发规则。 BackendServer:后端的一组ECS(云服务器)。 下图描述了负载均衡服务的核心概念。来自外部的访问请求,由负载均衡实例根据相关的策略和转发规则分发到后端ECS进行处理。 协议支持 当前提供4层(TCP协议和UDP协议)和7层(HTTP和HTTPS协议)的负载均衡服务。 健康检查 支持对后端ECS进行健康检查,自动屏蔽异常状态的ECS,待该ECS恢复正常后自动解除屏蔽。 会话保持 提供会话保持功能,在Session的生命周期内,可以将同一客户端的请求转发到同一台后端ECS上。 调度算法 支持加权轮询(WRR),加权最小连接数(WLC),和轮询3种调度算法。 加权轮询:根据服务器的处理能力为后端 ECS 分配不同的权值,将外部请求依序分发到后端ECS上,后端ECS权重越高被分发的几率也越大。 加权最小连接数:根据服务器的处理能力为后端 ECS 分配不同的权值,将外部请求分发到当前连接数最小的后端ECS上,后端ECS权重越高被分发的几率也越大。 轮询:将外部请求依序分发到后端ECS上。 域名URL转发 针对七层协议(HTTP协议和HTTPS协议),支持按用户访问的域名和URL来转发流量到不同的虚拟服务器组。 访问控制 支持白名单控制,通过设置负载均衡监听,仅允许特定IP访问,适用于用户的应用只允许特定IP访问的场景。(只能通过Lua) 使用场景 负载均衡主要可以应用于以下场景中: 灵活的进行流量分发,适用于具有高访问量的业务。 横向扩展应用系统的服务能力,适用于各种 web server 和 app server。 消除应用系统的单点故障,当其中一部分 ECS 发生故障后,应用系统仍能正常工作。 提高应用系统容灾能力,多可用区部署,机房发生故障后,仍能正常工作。 https://help.aliyun.com/document_detail/27541.html?spm=5176.doc27543.6.544.5RC2R1 术语表 中文 英文 说明 负载均衡服务 Server Load Balancer 阿里云计算提供的一种网络负载均衡服务,可以结合阿里云提供的 ECS 服务为用户提供基于 ECS 实例的 TCP 与 HTTP 负载均衡服务。 负载均衡实例 Load Balancer 负载均衡实例可以理解为负载均衡服务的一个运行实例,用户要使用负载均衡服务,就必须先创建一个负载均衡实例,LoadBalancerId 是识别用户负载均衡实例的唯一标识。 负载均衡服务监听 Listener 负载均衡服务监听,包括监听端口、负载均衡策略和健康检查配置等,每个监听对应后端的一个应用服务。 后端服务器 Backend Server 接受负载均衡分发请求的一组ECS,负载均衡服务将外部的访问请求按照用户设定的规则转发到这一组后端 ECS上进行处理。 服务地址 Address 系统分配的服务地址,当前为IP地址。用户可以选择该服务地址是否对外公开,来分别创建公网和私网类型的负载均衡服务。 证书 Certificate 用于 HTTPS 协议。用户将证书上传到负载均衡中,在创建 HTTPS 协议监听的时候绑定证书,提供 HTTPS 服务。 主可用区 Master Availability Zone 负载均衡会在某些地域的多个可用区进行部署,用户可指定主备可用区创建负载均衡实例,该实例将默认工作在主可用区。 备可用区 Slave Availability Zone 负载均衡会在某些地域的多个可用区进行部署,用户可指定主备可用区创建负载均衡实例,当主可用区发生故障时,该实例可切换到备可用区工作。

优秀的个人博客,低调大师

🎉🎉 wmproxy 0.2.7 发布,用 rust 仿 nginx 实现,多端口地址监听

0.2.7 添加多地址解析监听 以下是常见的IP解析示例情况,本地ip为192.168.0.100示例: 正常IP解析 127.0.0.1:8869解析成 ipv4 127.0.0.1 端口 8869,只接受本地来的连接信息 0.0.0.0:8869解析成 ipv4 0.0.0.0 端口 8869,可接受所有来自ipv4的连接信息 以:开头的地址,且不包含- :8869解析成 ipv4 127.0.0.1 端口 8869 及 ipv4 192.168.0.100 端口 8869 包含-的地址 :8869-:8871解析成 ipv4 127.0.0.1 端口 8869 - 8871 三个端口地址 及 ipv4 192.168.0.100 端口 8869 - 8871 三个端口地址,总共6个端口地址 127.0.0.1:8869-:8871解析成 ipv4 127.0.0.1 端口 8869 - 8871 三个端口地址 总共3个端口地址 127.0.0.1:8869-192.168.0.100:8871解析成 ipv4 127.0.0.1 端口 8869 - 8871 三个端口地址 总共3个端口地址,忽略后面的地址,只接受端口号 手动多个地址,可以空格或者,做间隔 127.0.0.1:8869 127.0.0.1:8899 192.168.0.100:8899就相应的解析成三个端口地址 wmproxy已用Rust实现http/https代理,socks5代理,反向代理,负载均衡,静态文件服务器,四层 TCP/UDP 转发,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子 📦 安装 & 🏃 使用 安装 cargo install wmproxy OR git clone https://github.com/tickbh/wmproxy cd wmproxy cargo install --path . docker pull dreamwhat/wmproxy docker run -p 82:82 -p 8090:8090 -p 127.0.0.1:8837:8837 --name proxy_bash dreamwhat/wmproxy /bin/./wmproxy proxy -b 0.0.0.0:8090 使用 默认端口为 8090 端口,默认监听地址为 127.0.0.1 # 直接通用默认参数 wmproxy proxy # 设置账号密码 wmproxy proxy -b 0.0.0.0:8090 --user wmproxy --pass wmproxy # 其它指令 wmproxy --help #配置文件版启动 wmproxy config -c config/client.toml 启动二级代理 在本地启动代理 wmproxy proxy -b 127.0.0.1:8090 -S 127.0.0.1:8091 --ts 或者 wmproxy config -c config/client.toml 配置文件如下: [proxy] # 连接服务端地址 #server = "127.0.0.1:8091" bind_addr = "0.0.0.0:8090" flag = "http https socks5" # 连接服务端是否加密 ts = true two_way_tls = true # username = "wmproxy" # password = "wmproxy" # 内网映射配置的数组 #将localhost的域名转发到本地的127.0.0.1:8080 [[proxy.mappings]] name = "web" mode = "http" local_addr = "127.0.0.1:8080" domain = "localhost" headers = [ "proxy x-forward-for {client_ip}", "proxy + from $url", "+ last-modified 'from proxy'", "- etag", ] #将tcp的流量无条件转到127.0.0.1:8080 [[proxy.mappings]] name = "tcp" mode = "tcp" local_addr = "127.0.0.1:8080" domain = "" 因为纯转发,所以在当前节点设置账号密码没有意义-S表示连接到的二级代理地址,有该参数则表示是中转代理,否则是末端代理。--ts表示连接父级代理的时候需要用加密的方式链接 在远程启动代理 wmproxy proxy --user proxy --pass proxy -b 0.0.0.0:8091 --tc 或者 wmproxy config -c config/server.toml 配置文件如下: [proxy] #绑定的ip地址 bind_addr = "127.0.0.1:8091" #代理支持的功能,1为http,2为https,4为socks5 # flag = "7" username = "wmproxy" password = "wmproxy" #内网映射http绑定地址 map_http_bind = "127.0.0.1:8001" #内网映射tcp绑定地址 map_tcp_bind = "127.0.0.1:8002" #内网映射https绑定地址 map_https_bind = "127.0.0.1:8003" #内网映射的公钥证书,为空则是默认证书 # map_cert = #内网映射的私钥证书,为空则是默认证书 # map_key = # 双向认证 two_way_tls = true #接收客户端是为是加密客户端 tc = true #当前服务模式,server为服务端,client为客户端 mode = "server" --tc表示接收子级代理的时候需要用加密的方式链接,可以--cert指定证书的公钥,--key指定证书的私钥,--domain指定证书的域名,如果不指定,则默认用自带的证书参数 至此通过代理访问的,我们已经没有办法得到真正的请求地址,只能得到代理发起的请求 代理间的认证 目前提供了两种认证双式,two_way_tls开启客户端的证书认证信息,另一种服务端配置了username和password即需要客户端配置相同的用户密码才能启用认证信息,两种方式可叠加使用或者单独使用。 配置添加如下: proxy: two_way_tls: true username: wmproxy password: wmproxy 🚥 路线图 socks5 IPV6 支持 SOCKS5验证方式 NOAUTH USERPASS SOCKS5Commands CONNECT UDP ASSOCIATE http/https IPV6 支持 内网穿透 Http 支持 Https 支持 Tcp 支持 反向代理 静态文件服务器 被动健康检查 主动健康检查 配置热加载 负载均衡 四层 TCP 负载 四层 UDP 负载 流量控制 websocket 转发 基础能力 日志 扩展能力 请求限速 (limit_req) 修改 HTTP 请求 Header 支持 HTTP2 的内网穿透 控制微端 try_paths tcp 转 websocket websocket 转 tcp

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册