手把手教你Nginx常用模块详解之ngx_http_upstream_module(六)

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 手把手教你Nginx常用模块详解之ngx_http_upstream_module(六)

本专栏非常感谢大家得关注和支持,本人开源项目站点https://erosbt.com 将自己热爱与信仰的技术,持续不辍地传递。


Nginx专栏



一. 指令


ngx_http_upstream_module

该ngx_http_upstream_module模块用于定义可由proxy_pass,fastcgi_pass,uwsgi_pass,scgi_pass和memcached_pass指令引用的服务器组。


二. 语法


句法: 上游名称{…}
默认:
语境: HTTP

定义一组服务器。服务器可以侦听不同的端口。另外,侦听TCP和UNIX域套接字的服务器可以混合使用。

例:

upstream backend {
    server backend1.example.com weight=5;
    server 127.0.0.1:8080       max_fails=3 fail_timeout=30s;
    server unix:/tmp/backend3;
    server backup1.example.com  backup;
}

默认情况下,使用加权轮询平衡方法在服务器之间分配请求。在上面的例子中,每7个请求将分配如下:5个请求转到backend1.example.com一个请求并且对每个第二和第三个服务器发出一个请求。如果在与服务器进行通信期间发生错误,则该请求将被传递到下一个服务器,并依此类推,直到所有正在运行的服务器都将被尝试。如果无法从任何服务器获得成功响应,则客户端将收到与最后一个服务器通信的结果。

句法: 服务器地址参数;
默认:
语境: upstream

定义服务器address和其他parameters服务器。该地址可以指定为域名或IP地址,可选端口或指定为“ unix:”前缀之后指定的UNIX域套接字路径。如果未指定端口,则使用端口80。解析为多个IP地址的域名一次定义多个服务器。


以下参数可以定义:


weight= number设置服务器的权重,默认情况下为1. max_conns= number限制number到代理服务器的同时活动连接的最大数量(1.11.5)。默认值为零,这意味着没有限制。如果服务器组不驻留在共享内存中,则每个工作进程都有限制。


为了使这个参数起作用,必须在http块中指定解析器指令。例:

http {
    resolver 10.0.0.1;
    upstream u {
        zone ...;
        ...
        server example.com resolve;
    }
}

route= string设置服务器路由名称。service= name启用解析DNS SRV记录并设置服务name(1.9.13)。为了使此参数起作用,有必要指定服务器的解析参数并指定一个不带端口号的主机名。


如果服务名称不包含点(“ .”),则会构造符合RFC的名称,并将TCP协议添加到服务前缀中。例如,要查找_http._tcp.backend.example.comSRV记录,有必要指定指令:

服务器backend.example.com服务= http解析;

如果服务名称包含一个或多个点,则通过加入服务前缀和服务器名称来构造名称。例如,要查找_http._tcp.backend.example.com和server1.backend.example.comSRV记录,有必要指定指令:

server backend.example.com service=_http._tcp resolve;
server example.com service=server1.backend resolve;

最高优先级的SRV记录(具有相同的最低优先级值的记录)被解析为主服务器,其余的SRV记录被解析为备份服务器。如果为服务器指定了备份参数,则将高优先级SRV记录解析为备份服务器,其余SRV记录将被忽略。


slow_start= time设置time服务器将其重量从零恢复到正常值的时间,当不健康的服务器变得健康时,或者服务器在一段时间后变得可用时认为不可用。默认值为零,即慢启动被禁用。


该参数不能与hash和ip_hash负载平衡方法一起使用。如果组中只有一台服务器max_fails,fail_timeout并且slow_start参数被忽略,并且这样的服务器永远不会被视为不可用。

句法: 区域名称大小
默认:
语境: upstream

定义name和size其保持组的配置和运行时被工作者进程之间共享状态中的共享存储器区。几个小组可能共享相同的区域。在这种情况下,size仅指定一次就足够了。


对于FastCGI服务器,需要设置fastcgi_keep_conn以使Keepalive连接正常工作:

upstream fastcgi_backend {
    server 127.0.0.1:9000;
    keepalive 8;
}
server {
    ...
    location /fastcgi/ {
        fastcgi_pass fastcgi_backend;
        fastcgi_keep_conn on;
        ...
    }
}

使用默认循环方法以外的负载均衡器方法时,需要在keepalive指令之前激活它们。SCGI和uwsgi协议没有保持连接的概念。

句法: NTLM;
默认:
语境: upstream

允许使用NTLM身份验证进行代理请求。一旦客户端发送具有以“ Negotiate”或“ NTLM” 开头的“授权”报头字段值的请求,上游连接就绑定到客户端连接。进一步的客户端请求将通过相同的上游连接进行代理,保持认证上下文。


为了使NTLM身份验证正常工作,有必要启用与上游服务器的保持连接。proxy_http_version指令应设置为“ 1.1”,并且应清除“连接”标题字段:

upstream http_backend {
    server 127.0.0.1:8080;
    ntlm;
}
server {
    ...
    location /http/ {
        proxy_pass http://http_backend;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        ...
    }
}


三. 示例


upstream backend {
    server backend1.example.com       weight=5;
    server backend2.example.com:8080;
    server unix:/tmp/backend3;
    server backup1.example.com:8080   backup;
    server backup2.example.com:8080   backup;
}
server {
    location / {
        proxy_pass http://backend;
    }
}

以上更多详解请大家关注nginx官方网站https://nginx.org/en/docs/


    以上就是我们今天的教程,如果本文对你有所帮助,欢迎关注点赞,分享给您身边的朋友。您的鼓励就是对我的最大动力。

相关文章
|
3月前
|
负载均衡 应用服务中间件 API
Nginx:location配置模块的用法(一)
Nginx:location配置模块的用法(一)
434 2
|
1月前
|
缓存 JavaScript 安全
nodejs里面的http模块介绍和使用
综上所述,Node.js的http模块是构建Web服务的基础,其灵活性和强大功能,结合Node.js异步非阻塞的特点,为现代Web应用开发提供了坚实的基础。
100 62
|
1月前
|
应用服务中间件 nginx C++
nginx的cgi模块
nginx的cgi模块
26 0
|
1月前
|
JSON API 开发者
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
15 0
|
1月前
|
移动开发 网络协议 C语言
详解 httptools 模块,一个 HTTP 解析器
详解 httptools 模块,一个 HTTP 解析器
26 0
|
3月前
|
缓存 应用服务中间件 nginx
安装nginx-http-flv-module模块
本文介绍如何为Nginx安装`nginx-http-flv-module`模块。此模块基于`nginx-rtmp-module`二次开发,不仅具备原模块的所有功能,还支持HTTP-FLV播放、GOP缓存、虚拟主机等功能。安装步骤包括:确认Nginx版本、下载相应版本的Nginx与模块源码、重新编译Nginx并加入新模块、验证模块安装成功。特别注意,此模块已包含`nginx-rtmp-module`功能,无需重复编译安装。
160 1
|
3月前
|
JSON API 数据格式
Python网络编程:HTTP请求(requests模块)
在现代编程中,HTTP请求几乎无处不在。无论是数据抓取、API调用还是与远程服务器进行交互,HTTP请求都是不可或缺的一部分。在Python中,requests模块被广泛认为是发送HTTP请求的最简便和强大的工具之一。本文将详细介绍requests模块的功能,并通过一个综合示例展示其应用。
|
3月前
|
负载均衡 应用服务中间件 Linux
在Linux中,常用的 Nginx 模块有哪些,常来做什么?
在Linux中,常用的 Nginx 模块有哪些,常来做什么?
|
3月前
|
缓存 应用服务中间件 API
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(三)
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(三)
47 3
|
3月前
|
缓存 前端开发 应用服务中间件
Nginx:location配置模块的用法(二)
Nginx:location配置模块的用法(二)
102 2
下一篇
无影云桌面