Nginx server_name 正则泛域名反向代理两例

最近在学习Nginx搭建负载均衡系统,感觉系统部署方式的思路瞬间开阔了很多。

负载均衡服务器的后端服务器上各自有一套功能相同的WEB管理系统,主要作用是方便的对各自服务器的IIS站点及服务器防火墙测量进行调整,在没有上Nginx之前,一直都是各自使用IP:Port的方式访问,虽然时间长了IP也都能记得住,毕竟感觉很low,如果也能使用域名进行访问就好了。虽然也可以直接解析两个域名到对应的服务器上,可惜后端服务器的这两套管理系统毕竟是非80端口的方式部署,既然解析了域名,也仅仅是变成了domain:Port的方式,并没有变得更简洁。

但是有了Nginx就完全不同了(HAProxy也可以达到同样的目的)。

※ 负载均衡环境

Nginx 192.168.6.100
Ser02 192.168.6.102
Ser03 192.168.6.103
泛域名解析 *.mydomain.com 指向 192.168.6.100
管理系统分别部署在 102/103 服务器的 803 端口

※ 直接匹配后端服务器 IP

    server {
        listen       80;
        server_name  ~^fw(?<serip>.+).mydomain.com$;

        location / {
            proxy_pass       http://192.168.6.$serip:803;
            proxy_redirect   off;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

这样可以使用 http://fw102.mydomain.com 访问 192.168.6.102 服务器上的管理系统,使用 http://fw103.mydomain.com 访问 192.168.6.103 服务器上的管理系统。

※ 匹配后端服务器组编号

    server {
        listen       80;
        server_name  ~^fw(?<serno>.+).mydomain.com$;

        location / {
            proxy_pass       http://backser_$serno;
            proxy_redirect   off;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

后端服务器组

    upstream backser_02 {
        ip_hash;
        server  192.168.6.102:803;
    }

    upstream backser_03 {
        ip_hash;
        server  192.168.6.103:803;
    }

这样可以使用 http://fw02.mydomain.com 访问 192.168.6.102 服务器上的管理系统,使用 http://fw03.mydomain.com 访问 192.168.6.103 服务器上的管理系统。

posted on 2017-11-28 22:15  观摩  阅读(6570)  评论(0编辑  收藏  举报