首页 新闻 会员 周边 捐助

如何实现nginx负载均衡根据请求的主机名选择upstream

0
悬赏园豆:50 [已解决问题] 解决于 2018-04-06 22:00

想用nginx作为docker swarm集群的路由容器以取代docker-flow-proxy,配置nginx时每个主机名配置一个upsream,由于有很多个主机名,如果每个主机名都配置一个proxy_pass会很麻烦,有什么办法可以实现根据请求的主机名自动对应的upstream?

dudu的主页 dudu | 高人七级 | 园豆:30948
提问于:2018-04-06 15:31
< >
分享
最佳答案
1

用 nginx 内置变量 $http_host 就可以了

server {
    listen 80;
    location / {
        proxy_pass http://$http_host;
    }
}
dudu | 高人七级 |园豆:30948 | 2018-04-06 21:59

补充:还要加上 resolver ,对于 docker swarm 中的容器,resolver 的地址是 127.0.0.11

server {
  listen 80;
  location / {
     resolver 127.0.0.11;     
     proxy_pass http://$host;
  }
}
dudu | 园豆:30948 (高人七级) | 2018-04-08 12:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册