当前位置:首页 > CN2资讯 > 正文内容

Nginx反向代理总结nginx反向代理服务

2天前CN2资讯

反向代理的种类

1. LVS的方案 2. DNS轮询的方案 3. Nginx的4层代理 4. Nginx的7层代理 5. 网络NAT的处理

Nginx的反向代理-四层`

编译时增加 --with-stream 就可以. 然后可以使用 stream 四层反向代理 可以代理 mysql redis 以及一些其他的内容配置. 但是四层反向代理缺少很多语法, 比如七层反向代理来的适用面广 一个四层反向代理的标准处理为: stream { upstream backend { # 指定负载均衡算法,这里是一致性hash算法,以$remote_addr作为hash的键. hash $remote_addr consistent; server :12345 weight=5; server 127.0.0.1:12345 max_fails=3 fail_timeout=30s; server unix:/tmp/backend3; } server { # 指定监听的端口,tcp/udp listen 12345; proxy_connect_timeout 1s; proxy_timeout 3s; # 代理至backend服务器组 proxy_pass backend; }

关于四层反向代理的几个负载均衡算法

round-robin: 默认情况下,NGINX使用循环算法对流量进行负载均衡,将其顺序定向到配置的上游组中的服务器。 因为它是默认方法,没有round-robin指令; 只需upstream在顶层stream上下文中创建一个 配置块并添加上server一步中描述的指令。 least_conn : NGINX选择当前活动连接数较少的服务器。 least_time : NGINX选择平均延迟最小,活动连接数最少的服务器。 最低平均延迟是基于以下参数中的哪一个包括在least_time指令上计算的: connect - 连接到上游服务器的时间 first_byte - 接收数据的第一个字节的时间 last_byte - 从服务器接收完整响应的时间 hash : NGINX基于用户定义的密钥选择服务器,例如源IP地址 所述散列负载平衡方法还用于配置会话持久性。 于散列函数基于客户端IP地址,来自给定客户端的连接始终传递到同一服务器, 除非服务器关闭或以其他方式不可用。指定一个可选consistent参数以应用ketama一致性散列方法:

四层的负载均衡的范例

upstream backend { laset_conn ; } upstream backend { least_time first_byte; } upstream stream_backend { hash $remote_addr consistent; } # 能够实现客户端绑定到具体的服务器端.

http负载均衡

除了四层反向代理, 用的最多的是 七层反向代理. http { upstream backend { server weight=5; server ; server 192.0.0.1 backup; } server { location / { proxy_pass http://backend; } } }

区别

四层反向代理是在 stream 的配置节里面 七层反向代理是在 http 的配置节里面 四层反向代理 可以指定 udp和tcp两种协议. 七层反向代理 可以指定 https等.

http 的负载均衡算法

与四层负载均衡对应, 七层负载均衡也有很多算法. least_conn; ip_hash; hash $request_uri consistent; least_time header; (header,last_byte) 可以增加 weight=xxx 的比重,如果服务器配置不同,可以进行一定程度的区分.

关于sitcky以及ip_hash

ip_hash 是 nginx 开源版就支持的负载均衡粘滞模式. 最大的区别是, 他是基于内核里面的ip地址进行计算来的. 具体算法是: 注意代码的位置为:src/http/modules/ngx_http_upstream_ip_hash_module.c 注意修改 : addrlen 的参数 从 3 修改为 4 就可以进行全部ipv4段的负载均衡. 但是需要注意如果是VPN 过来的IP电话, 或者是如下hash算法的处理的结果一致 依旧会路有到相同的后端服务器上面. for ( ;; ) { for (i = 0; i < (ngx_uint_t) iphp->addrlen; i++) { hash = (hash * 113 + iphp->addr[i]) % 6271; }

关于sticky

最开始是一个组件, 需要编译时显示指定. 怀疑最近nginx plus 企业版将其纳入了使用范围. 开源版本的支持边的越来越有线. 1.22.x的版本还是支持的, 但是1.23.0就不在支持比较奇怪 具体的写法有如下几种: 注意如果比较简单 直接写 sticky;也可以. sticky cookie srv_id expires=1h domain=.example.com path=/; sticky route $route_cookie $route_uri; sticky learn create=$upstream_cookie_examplecookie lookup=$cookie_examplecookie zone=client_sessions:1m timeout=1h sync;

关于负载均衡的性能

反向代理, 其实是 一方面做为服务端提供服务, 一方面作为客户端连接后端服务的过程. worker进程core绑定 对应网卡的中断绑定 作为服务端提供长连接服务 作为客户端提供对后端服务的长连接服务. 需要注意作为客户端时 必须保证 客户端的超时时间, 以及超时客户端的数量小于后端服务器. 但是也可以这样计算. 如果我方向代理 4个服务器, 设置长连接40个, 超时时间 60s 那么建议每个后端服务 至少也设置为40个以上的长连接, 60秒以上的超时时间. 避免如果负载不均衡是不会出现严重的问题.

长连接参数配置

http { keepalive_timeout 6000; # 作为服务端的超时时间 keepalive_requests 10000; # 长连接的个数. 注意不能太大. upstream myapp{ ip_hash; keepalive 300; # 这是是联系反向代理服务器的设置. server 127.0.0.1:5200 ; server 127.0.0.1:5201 ; } server { listen 8080 default_server; server_name ""; location / { proxy_http_version 1.1; # 注意这个是必须的参数 # proxy_set_header Connection ""; # 注意 我加上这个参数. 登录就失败了, 建议不使用这个参数. } }

注意内核参数的设置

1. TCP相关内核的参数: tw,port_range,somaxconn,tw_reuse 等核心参数. 2. TCP拥塞算法的选择. 是否启用tcp的聚合等处理. 3. 网卡软中断的绑核. 建议与nginx在同一个sockets,但是不在同一个core上面来提高吞吐量. 4. tcp 内存设置参数, 可以适当调大, 便于进行处理. 5. 如果延时敏感性, 可以关闭部分网卡的GSO,TSO 等参数,提高响应速度.不过会浪费一点带宽.



    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/24967.html

    分享给朋友:

    “Nginx反向代理总结nginx反向代理服务” 的相关文章

    inet.ws纽约:高性能VPS服务与折扣优惠码解析

    inet.ws是一家新兴的互联网服务提供商,成立于2020年。尽管公司年轻,但它凭借创新的VPS服务迅速在市场上占据了一席之地。最让人称道的是,inet.ws致力于为用户提供稳定和高效的云服务器体验,尤其是在他们的纽约数据中心,这里被认为是其最重要的运营点之一。 在发展的过程中,inet.ws不断完...

    BT下载机的使用技巧与软件下载推荐

    在数字时代,文件共享变得越来越普遍,BT下载机作为一种基于BitTorrent协议的P2P(Peer-to-Peer)文件共享工具,扮演着重要的角色。我记得第一次接触BT下载机时,发现它的操作不仅简单,还能快速下载大型文件,这让我对它产生了浓厚的兴趣。BT下载机允许用户通过种子文件(.torrent...

    探索64clouds:方便的VPS管理工具及其功能解析

    什么是64clouds及其功能 在如今的云计算时代,64clouds无疑是一个让人耳目一新的名字。作为搬瓦工(BandwagonHost)VPS的KiwiVM控制面板域名,64clouds为用户提供了一个方便的管理平台。这意味着用户不必再为复杂的服务器管理技术而烦恼,64clouds的出现大大降低了...

    甲骨文注册的重要性与流程详解

    什么是甲骨文注册 甲骨文注册,顾名思义,是对甲骨文进行官方备案的过程。甲骨文是中国古代的一种文字,最早出现在商朝晚期,主要被用于记录卜辞。这种文字不仅在语言和文化上有着重要的地位,还是研究古代历史和社会的一把钥匙。通过甲骨文注册,相关机构和个人可以对其研究或使用活动进行合法的保护和管理,确保甲骨文的...

    爱快助力安装Win10:全步骤指南和常见问题解决方案

    爱快概述 当我第一次接触爱快的时候,它给我带来了不少惊喜。爱快,一个专注于网络设备管理与配置的工具,让我对网络的掌控能力提升了很多。我发现,爱快不仅让我的路由器管理变得简单,还可以实现对网络的深度调试与分析。对于那些想要轻松管理网络的人来说,爱快无疑是一个不错的选择。 爱快的主要功能和特点让我印象深...

    掌握PVM: 并行虚拟机在高效计算中的应用与优势

    什么是PVM PVM,全称为“并行虚拟机”(Parallel Virtual Machine),是一种软件架构,用于多台计算机之间的并行计算。这种技术使得不同的计算机可以连接在一起,像一个单一的超级计算机一样共同完成任务。想象一下,你在进行一个复杂的计算,它需要大量的时间和资源。通过PVM,你可以将...