【问题标题】:Nginx connectivity with vultr loadbalancerNginx 与 vultr 负载均衡器的连接
【发布时间】:2021-08-20 21:10:47
【问题描述】:

我们在单个 vultr 云实例上拥有许多应用程序,但对于具有 SSL 证书的单个 https loadBalancer,它只有一个默认的健康检查。

所以我们使用 nginx 来配置多个 /backend URL 并指定 http 并使用 docker-compose 运行以使应用程序在单个网络上运行。

 server {
    listen       80;
    listen  [::]:80;
    server_name  *.example.com;

    access_log  /var/log/nginx/host.access.log  main;

    location / {
        proxy_pass http://strapi-container:1337/;
    }
 
    location /chat {
        proxy_pass http://rocketchat-container:3000;

    }

    location /auth {
        proxy_pass http://keycloak-container:8080;
        proxy_set_header Host $host;
    }
  }
}

后端url分别为http://instance-ip/、http://instance-ip/chat、http://instance-ip/auth

  nginx:
    image: nginx:1.20
    container_name: nginx
    ports:
      - 80:80
    restart: unless-stopped
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - strapi-cms
      - rocketchat
      - keycloak
    networks:
      - test-network

一切正常,我们可以通过带有上述后端 URL 的 nginx 默认端口 80 访问应用程序。

但我们的意图是以某种方式将 nginx 与 vultr 中的 HTTPS LoadBalancer 连接起来,它应该可以正常工作

例如:https://qa.example.com/https://qa.example.com/chathttps://qa.example.com/auth

【问题讨论】:

    标签: nginx docker-compose load-balancing nginx-config vultr


    【解决方案1】:

    您要做的是在 Vultr 负载均衡器上设置一个转发规则。

    实例上 TLS 的转发规则 443->443

    LB 上 TLS 的转发规则 443->80

    这将使 LB 将定义的 LB 端口上的所有传入流量转发到 NGINX 定义的端口。然后您的 nginx 实例应该将该位置路由到您定义的相应 proxy_pass。

    至于运行状况检查...Vultr 负载均衡器只有一次运行状况检查,因为它们旨在与 LB 后面的单个应用程序一起使用。但是,您可以有一个 /health 端点,当点击该端点时,它将检查您所有其他应用程序的状态,如果它们都在运行,则返回 200 ok

    我们在https://www.vultr.com/docs/vultr-load-balancers 上提供了一些详细的文档

    完全披露我是 Vultr 负载平衡器的技术主管。

    【讨论】:

    • 是否必须使用负载均衡器进行端口转发?由于LB是额外收费的,所以只需要确认即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    相关资源
    最近更新 更多