Nginx 通过 header 中的标识进行分发

这篇具有很好参考价值的文章主要介绍了Nginx 通过 header 中的标识进行分发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Nginx可以根据请求头中自定义的标识将请求分发到不同的服务器。具体来说,可以使用map指令将请求头中的自定义标识映射为不同的后端服务器地址,然后使用proxy_pass指令将请求转发到对应的后端服务器。

以下是一个示例配置文件:

http {
    map $http_my_header $backend {
        default   backend1.example.com;
        value1    backend2.example.com;
        value2    backend3.example.com;
    }
    
    upstream backend1 {
        server 192.168.1.1:8080;
        server 192.168.1.2:8080;
    }

    upstream backend2 {
        server 192.168.2.1:8080;
        server 192.168.2.2:8080;
    }

    upstream backend3 {
        server 192.168.3.1:8080;
        server 192.168.3.2:8080;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://$backend;
        }
    }
}

在这个配置文件中,我们定义了一个map指令,将请求头中的$http_my_header 变量映射为不同的后端服务器地址。如果$http_my_header 的值为value1,请求将转发到backend2.example.com;如果$http_my_header的值为value2,请求将转发到backend3.example.com;否则,请求将转发到backend1.example.com

接下来,我们定义了三个upstream块,分别代表后端服务器组backend1、backend2和backend3,每个组包含多个后端服务器。在server块中,我们使用proxy_pass指令将请求转发到对应的后端服务器。

这样配置之后,如果请求头中的$http_my_header的值为value1,请求将被转发到backend2后端服务器组;如果$http_my_header的值为value2,请求将被转发到backend3后端服务器组;否则,请求将被转发到backend1后端服务器组。

配置 socket 增加几个配置:

server {
        listen 80;
        server_name example.com;

        location /websocket {
            proxy_pass http://$backend;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
        }
    }

如果是子路径, 不可以直接在后面加 /xxxx, 例如:

      location /xxxx/ {
            proxy_pass http://$backend/xxxx/;
        }

正确的做法是在后面加上 $request_uri;文章来源地址https://www.toymoban.com/news/detail-461683.html

      location /xxxx/ {
            proxy_pass http://$backend$request_uri;
        }

到了这里,关于Nginx 通过 header 中的标识进行分发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通过nginx的upstream配置域名进行http/htts的访问最佳实践方案(406/404问题解决)

    ​ 最近,开发部门有一个访问需求,被访问方给了我们两个https的域名访问接口,这里假设为: ​ 这两个域名解析出来的地址和接口信息都是一样的,但是根据要求,需要将两个域名访问接口作为主备的方式进行配置,在https://aaa.target.com/mytarget/login/出现异常不能使用的时候

    2024年01月19日
    浏览(45)
  • nginx proxy_set_header设置、自定义header

    XXX 语法 proxy_set_header field value; 默认值 proxy_set_header Host $proxy_host; proxy_set_header Connection close; 上下文 http, server, location 允许重新定义或者添加发往后端服务器的请求头。value可以包含文本、变量或者它们的组合。 当且仅当当前配置级别中没有定义proxy_set_header指令时,会从上面

    2024年02月03日
    浏览(39)
  • nginx转发headers内容丢失解决办法

    开发网关项目时,在请求时往请求头header中放入了签名sign_key信息,在接收请求时再从header中拿出,在本地调试时是可以的,但上线之后通过Nginx代理之后发现拿不到。 nginx代理默认会把header中参数的 \\\"_\\\" 下划线去掉,所以后台服务器后就获取不到带\\\"_\\\"线的参数名。需要在htt

    2024年02月11日
    浏览(64)
  • Nginx 中常见 header 配置及修改

    在 nginx 中,经常需要因为各种原因,修改 header,所以今天整理下 nginx 中 header 的一些指令 header 是 http 中的消息头,里面包含很多信息,通常又分为 request headers(请求头)和 response headers(响应头) 客户端向服务器发送的请求中包含请求头,服务器向客户端回复的响应中包含响应

    2024年02月05日
    浏览(37)
  • linux 通过docker进行build编译nginx时现./configure报-bash: ./configure: No such file or directory

    我们前端程序是通过nginx代理的,我们前后端都是通过docker来管理的 今天要将前端包和 nginx实例话的,在我的dockerFile文件里面有一个命令,就是将一个nginx.tar.gz包复制到/usr/local目录下然后解压,这个nginx.tar.gz里面包含了这个。/configure文件,结果在执行一个编译命令的时候报

    2024年02月07日
    浏览(37)
  • nginx proxy_set_header详解

    proxy_set_header 是 Nginx 配置中的一个重要指令,特别是在使用 Nginx 作为反向代理时。该指令允许你修改由 Nginx 传递给代理后端的请求头。这对于确保后端应用程序能够接收到正确的客户端信息(如 IP 地址、主机名等)以及控制缓存行为等场景非常有用。 以下是 proxy_set_header

    2024年03月10日
    浏览(81)
  • Nginx proxy_set_header参数设置

    不设置 proxy_set_header Host 时,浏览器直接访问 nginx,获取到的 Host 是 proxy_pass 后面的值,即 $proxy_host 的值,参考Module ngx_http_proxy_module 1 2 3 4 5 6 7 8 # cat ngx_header.conf server {      listen 8090;      server_name _;      location / {          proxy_pass http: //172 .31.5.0:5000;      } } 结果

    2024年04月16日
    浏览(32)
  • Nginx 获取自定义请求header头和URL参数

    在 ngx_lua 中访问 Nginx 内置变量 ngx.var.http_HEADER 即可获得请求头HEADER的内容。 在 nginx配置中,通过$http_HEADER 即可获得请求头HEADER的内容。 案例: 在nginx的location配置中,在获取header配置时, 须要在header名称前面加上固定前缀“http_“,并将header名称中的“-”中划线变为下划线

    2024年02月04日
    浏览(34)
  • Nginx:设置响应header的content-type

    Nginx通常根据/etc/nginx/mime.types文件中类型设置content-type 有时需要根据实际需要指定content-type,比如对于下载,如果按照mime.types里面的定义: image/jpeg                            jpeg jpg; 那么当下载图片时,浏览器会在窗口内直接显示图片,而不是另存为文件 。 通过设置

    2024年02月12日
    浏览(37)
  • nginx反向代理proxy_set_header说明

    用途 设定被代理服务器接收到的header信息 允许重新定义或添加字段传递给代理服务器的请求头 值可以包含文本、变量和它们的组合 没有定义时会继承之前定义的值 语法: field:变量名       value:变量值 默认值(只有两个字段被重定义):   变量$host、$http_host、$proxy_host区

    2024年02月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包