upstream

Nginx的负载均衡配置(七)

▼魔方 西西 提交于 2019-11-30 01:57:04
原文链接: https://www.cnblogs.com/knowledgesea/p/5199046.html 首先给大家说下upstream这个配置的,这个配置是写一组被代理的服务器地址,然后配置负载均衡的算法。这里的被代理服务器地址有两种写法。 # 第一种 upstream mysvr { server 192.168.10.121:3333; server 192.168.10.122:3333; } server { .... location ~*^.+$ { proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表     } } # 第二种upstream mysvr { server http://192.168.10.121:3333; server http://192.168.10.122:3333; } server { .... location ~*^.+$ { proxy_pass mysvr; #请求转向mysvr 定义的服务器列表 } } 1. 热备:如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB..... upstream mysvr { server 127.0.0.1:7878; server 192

nginx报错111: Connection refused

末鹿安然 提交于 2019-11-29 23:44:56
最近遇到了nginx疯狂抛错,access.log一天一共5W多条,但error.log中有大概9K多条,基本都是 111: Connection refused ,这到底是为什么呢? 从日志看起 我们还是先来看日志。我提取了一条error.log当中抛错的日志(稍微分一下行,否则实在太长,敏感信息稍微处理了一下): 2019/06/06 10:09:45 [error] 28652#0: *883239 connect() failed (111: Connection refused) while connecting to upstream, client: 124.104.90.145, server: xxx.xxxxx.com, request: "POST /test-service/upload?mcachenum=155978698 HTTP/1.1", upstream: "http://[::1]:17000/test-service/upload?mcachenum=155978698", host: "xxx.xxxxx.com", referrer: "https://servicewechat.com/x98b46f69/2/page-frame.html" 看了一下前面的报错和后面的描述,第一眼看上去感觉都是正常。但再看之后发现, upstream

Nginx代理功能与负载均衡详解

China☆狼群 提交于 2019-11-29 21:26:33
Nginx代理功能与负载均衡详解 序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细。 Nginx代理服务的配置说明 1、上一篇中我们在http模块中有下面的配置,当代理遇到状态码为404时,我们把404页面导向百度。 error_page 404 https://www.baidu.com; #错误页 然而这个配置,细心的朋友可以发现他并没有起作用。 如果我们想让他起作用,我们必须配合着下面的配置一起使用 proxy_intercept_errors on; #如果被代理服务器返回的状态码为400或者大于400,设置的error_page配置起作用。默认为off。 2、如果我们的代理只允许接受get,post请求方法的一种 proxy_method get; #支持客户端的请求方法。post/get; 3、设置支持的http协议版本 proxy_http_version 1.0 ; #Nginx服务器提供代理服务的http协议版本1.0,1.1,默认设置为1.0版本 4、如果你的nginx服务器给2台web服务器做代理,负载均衡算法采用轮询,那么当你的一台机器web程序iis关闭,也就是说web不能访问

nginx负载均衡配置策略

百般思念 提交于 2019-11-29 19:30:32
5、负载均衡策略 1、轮询 这种是默认的策略,把每个请求按顺序逐一分配到不同的server,如果server挂掉,能自动剔除。 upstream fengzp.com { server 192.168.99.100:42000; server 192.168.99.100:42001; } 2、最少连接 把请求分配到连接数最少的server upstream fengzp.com { least_conn; server 192.168.99.100:42000; server 192.168.99.100:42001; } 3、权重 使用weight来指定server访问比率,weight默认是1。以下配置会是server2访问的比例是server1的两倍。 upstream fengzp.com { server 192.168.99.100:42000 weight=1; server 192.168.99.100:42001 weight=2; } 4、ip_hash 每个请求会按照访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一server进行处理,可以解决session的问题。如果server挂掉,能自动剔除。 upstream fengzp.com { ip_hash; server 192.168.99.100:42000; server

美团张志桐:美团 HTTP 服务治理实践

核能气质少年 提交于 2019-11-29 07:25:55
2019 年 7 月 6 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·上海站,美团基础架构部技术专家张志桐在活动上做了《美团 HTTP 服务治理实践》的分享。 OpenResty x Open Talk 全国巡回沙龙是由 OpenResty 社区、又拍云发起,邀请业内资深的 OpenResty 技术专家,分享 OpenResty 实战经验,增进 OpenResty 使用者的交流与学习,推动 OpenResty 开源项目的发展。活动将陆续在深圳、北京、武汉、上海、成都、广州、杭州等城市巡回举办。 首先做下自我介绍,我叫张志桐,毕业于哈尔滨工业大学,2015 年加入美团,目前在美团主要负责 Oceanus 七层负载均衡网关、Mtrace 分布式链路跟踪系统以及 KMS 密钥管理服务等。 美团是 Nginx 的老用户,从创业初期就使用 Nginx,直到 2013 年迁到了阿里的 Tengine,再到今年三四月份,全站服务迁到了 OpenResty 上。从 Tengine 迁到 OpenResty 最根本的原因是升级困难,随着 Nginx 的版本迭代越来越快,导致 Tengine 很难合到官方 Nginx 最新版本上,但是使用 OpenResty 可以平滑地升级整个 Nginx 的社区版本。 Oceanus 美团七层负载均衡网关

Linux架构之Nginx 七层负载均衡

女生的网名这么多〃 提交于 2019-11-28 20:45:13
第50章 Nginx七层负载均衡 一、Nginx负载均衡基本概述 1)为什么要使用负载均衡 当我们的Web服务器直接面向用户,往往要承载大量并发请求,单台服务器难以负荷。使用多台Web服务器组成集群,前端使用Nginx负载均衡,将请求分散地打到后端服务器集群中,实现负载的分发。可以大大提升系统的吞吐率、请求性能、高容灾能力。 往往我们接触的最多的是 SLB(Server Load Balance) 负载均衡,实现最多的也是 SLB ,那么 SLB 它的调度节点和服务节点通常是在一个地域里面。它在这个小的逻辑地域里面决定了他对部分服务的实时性、响应性是非常好的。 因此,当海量用户请求过来以后,它同样是请求调度节点,调度节点将用户的请求转发给后端对应的服务节点,服务节点处理完请求后再转发给调度节点,调度节点最后响应给用户节点。这样就能实现一个均衡的作用。 Nginx 就是一个典型的 SLB 。 2)负载均衡的叫法 2.1)负载均衡的叫法有很多: 负载均衡 负载 Load Balance LB 2.2)公有云中叫法有: 阿里云负载均衡——SLB 青云负载均衡——QLB 腾讯云负载均衡——CLB ucloud负载均衡——ULB 2.3)常见的负载均衡的软件有: Nginx、Haproxy、LVS 2.4)负载均衡能实现的应用场景一: 四层负载均衡 所谓四层负载均衡指的是 OSI

nginx中的超时配置

[亡魂溺海] 提交于 2019-11-28 20:12:21
nginx.conf配置文件中timeout超时时间设置 client_header_timeout 语法 client_header_timeout time 默认值 60s 上下文 http server(指可以放在http块和server块) 说明 指定等待client发送一个请求头的超时时间(例如:GET / HTTP/1.1).仅当在一次read中,没有收到请求头,才会算成超时。如果在超时时间内,client没发送任何东西,nginx返回HTTP状态码408(“Request timed out”) client_body_timeout 语法 client_body_timeout time 默认值 60s 上下文 http server location 说明 该指令设置请求体(request body)的读超时时间。仅当在一次readstep中,没有得到请求体,就会设为超时。超时后,nginx返回HTTP状态码408(“Request timed out”) keepalive_timeout (长连接类型) 语法 keepalive_timeout timeout [ header_timeout ] 默认值 75s 上下文 http server location 说明 第一个参数指定了与client的keep-alive连接超时时间

修复Nginx报错:upstream sent too big header while reading response header from upstream

感情迁移 提交于 2019-11-28 15:16:44
在 nginx.conf 的http段,加入下面的配置: proxy_buffer_size 128k; proxy_buffers 32 32k; proxy_busy_buffers_size 128k; 重启后一般就可以解决,如果还是报502,再在host配置的php段加入下面配置: fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; 重启nginx即可。 来源: https://www.cnblogs.com/xiaojf/p/11779752.html

Nginx+Lua+Redis连接池

只谈情不闲聊 提交于 2019-11-28 12:33:56
上篇介绍了如果使用Lua访问Redis,但是每次都是重新创建一个连接到Redis,其实更好的方法是使用Redis连接池。 如果创建Redis连接池呢?原理是用Nginx的Upstream来实现,在Nginx启动时就可以创建多条socket连接到RedisServer,然后我们只要把请求发送到该Upstream即可,具体来配置文件。 upstream redis_pool { server 127.0.0.1:6379; keepalive 1024; } 这样就创建了redis连接池, 接着在配置文件里面添加一个location。 location /get_redis{ set_unescape_uri $query $arg_query; redis2_raw_query $query; redis2_pass redis_pool; } 接下来就是如果使用redis连接池了。我写了一个lua模块。 RedisManager = {} RedisManager.runCommand = {} local metatable = { __call = function(table , ...) command = nil args = '' for key, value in ipairs({...}) do if not command then command = value

nginx 篇

人走茶凉 提交于 2019-11-28 04:11:24
nginx 安装 下载必要组件 nginx下载地址 http://nginx.org/en/download.html pcre库下载地址,nginx需要 http://sourceforge.net/projects/pcre/files/pcre/ zlib下载地址,nginx需要 http://www.zlib.net/ openssl下载地址,nginx需要 https://github.com/openssl/openssl 在同级目录下,解压安装zlib、openssl、pcre 创建 /usr/local/zlib /usr/local/openssl /usr/local/pcre /usr/local/nginx 四个文件夹。为以防万一,都给足权限 chmod 777 1、因为是零初始环境,所以要安装一些基本的文件,否则后面会狂报错   1)安装GCC软件套件::yum install gcc 否则会报错 configure: error: no acceptable C compiler found in $PATH   2)安装解压缩: yum install -y unzip zip 否则会报错 unzip: command not found   3)安装c++编译环境:yum groupinstall "Development Tools"