[英]Nginx connectivity with vultr loadbalancer
我们在单个 vultr 云实例上有许多应用程序,但是对于具有 SSL 证书的单个 https loadBalancer,它只有一个默认的健康检查。
so we used nginx to configure mutliple /backend URL with http specified and running using docker-compose to make applications running on a single network.
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;
}
}
}
The backend url is http://instance-ip/, http://instance-ip/chat, http://instance-ip/auth respectively
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
一切正常,我们可以通过 nginx 默认端口 80 使用上述后端 URL 访问应用程序。
但我们的意图是在 vultr 中以某种方式将 nginx 与 HTTPS LoadBalancer 连接起来,它应该像
例如: https://qa.example.com/、https : //qa.example.com/chat、https://qa.example。
您要做的是在 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 负载均衡器的技术主管。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.