首页 > 系统相关 >Nginx基于请求头的分发

Nginx基于请求头的分发

时间:2022-11-09 23:35:03浏览次数:47  
标签:分发 http 请求 pass server Nginx proxy upstream

前面介绍的分发方式适用于单个集群,而基于请求头分发适用于多个集群场景。

基于请求头的分发
1、基于host分发:适用于一个公司有多个网站,一个网站设置为一个集群

#nginx分发器设置
http {
    upstream web1 {   # 名为web1的反向代理群组
        server server1;
    }
    upstream web2 {   # 名为web2的反向代理群组
        server server2;
    }
    server {    # web1虚拟主机
        listen 80;
        server_name www.web1.com;    # 基于域名分发必须有域名
        location / {
            proxy_pass http://web1; 
        }
    }
    server {    # web2虚拟主机
        listen 80;
        server_name www.web2.com;    # 基于域名分发必须有域名 
        location / {
            proxy_pass http://web2; 
        }
    }
}

2、基于开发语言分发:适用于混合开发的网站,某些大型网站既有php也有jsp

# 分发器上nginx配置
http {
    upstream php {
        server server1; 
    }
    upstream html {
        server server2;
    }
    server {
        location ~* \.php$ {    # 以php结尾的
            proxy_pass http://php;
        } 
        location ~* \.html$ {   # 以html结尾的
            proxy_pass http://html;
        }
    }
}

3、基于浏览器分发:常应用于PC端和移动端区分或浏览器适配

upstream curl { server server1; }
upstream firefox { server server2; }
upstream other { server server3; }
server {
    listen 80;
    server_name www.web1.com;
    location / {
        proxy_pass http://other;
        if ( $http_user_agent ~* curl ) {
            proxy_pass http://curl;
        }
        if ( $http_user_agent ~* firefox ) {
            proxy_pass http://firefox;
        }
    }
}

4、基于源IP分发:通过ngx_http_geo_module模块,根据客户端ip访问到不同的server

upstream bj.server {
    server server1;    # web01
}
upstream sh.server {
    server server2;      # web02
}
upstream default.server {
    server server3;      # web03
}
geo $geo {       # IP库
    default default;
    server1 bj;    # 北京
    server2 sh;   # 上海
}
server {
    listen  80;
    server_name   www.web1.com;

    location / {
        proxy_pass http://$geo.server$request_uri;
    }
}

标签:分发,http,请求,pass,server,Nginx,proxy,upstream
From: https://www.cnblogs.com/tjane/p/16875574.html

相关文章

  • 请求与响应——日期类型参数传递
    1.  2.格式的转换都是靠下面这个类型转换器实现的 ......
  • Nginx:Docker Compose部署Nginx
    使用​​DockerCompose​​​部署​​Nginx​​​,创建​​docker-compose.yaml​​:[root@192~]#vimdocker-compose.yaml输入以下内容:version:'3'services:nginx:......
  • Nginx分发算法实现
    1、基于轮询分发:根据请求流量均匀分发到后端服务器upstreamweb{serverserver1;serverserver2;}server{listen80;server_namelocalhost;......
  • Nginx分发算法介绍
    分发算法:如何将用户请求按照一定的规律分发给业务服务器。主要分为Nginx集群默认算法和基于请求头分发算法。nginx的upstream目前支持4种方式的分配:1)轮询(默认)  每......
  • Nginx配置分发器
    本文章以nginx作为分发器,httpd作为后端服务器,nginx负责将请求流量分发到httpd节点。1、执行nginx安装脚本(往期文章有)shnginx_install2、切换到nginx配置文件目录cd......
  • Nginx集群介绍
    一、Nginx集群组成组成要素:1)VIP:给分发器的一个虚IP2)分发器:nginx3)数据服务器:web服务器二、nginx集群原理在Nginx集群中Nginx扮演的角色是分发器。主要任务是接受请求......
  • Shell脚本安装Nginx
    #!/bin/bashnginx_pkg='nginx-1.19.3.tar.gz'nginx_prefix=/usr/local/nginxhtml=/var/nginxlog=/var/log/nginxcheck13(){[$UID-ne0]&&echo"needto......
  • Nginx 优化与防盗链
    一、隐藏版本号1、隐藏版本号的操作步骤可以使用Fiddler工具抓取数据包,查看Nginx版本,也可以在CentOS中使用命令 curl-Ihttp://192.168.160.60显示响应报文首部信......
  • Nginx:代理FastDFS实现文件访问
    搭建​​FastDFS​​分布式文件系统参考下面这篇博客:​​分布式:搭建FastDFS分布式文件系统​​安装fastdfs-nginx-module安装​​fastdfs-nginx-module​​​也是只在​​st......
  • 关于前端:如何实现并发请求数量控制?
    原文地址: https://juejin.cn/post/7163522138698153997//并发请求函数constconcurrencyRequest=(urls,maxNum)=>{returnnewPromise((resolve)=>{......