————————————————

Nginx基于请求头的分发

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

基于请求头的分发
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;
    }
}
posted @   Tjane'Blogs  阅读(647)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示