Подключение Nginx к балансировщику нагрузки vultr

У нас было много приложений на одном экземпляре облака vultr, но у него есть только одна проверка работоспособности по умолчанию для одного https loadBalancer с сертификатом SSL.

поэтому мы использовали nginx для настройки нескольких 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

Все работает нормально, и мы можем получить доступ к приложениям через порт 80 по умолчанию nginx с указанным выше URL-адресом серверной части.

Но мы намерены как-то связать nginx с HTTPS LoadBalancer в vultr, он должен работать как

Например: https://qa.example.com/, https://qa.example.com/chat, https://qa.example.com/auth.

1 ответ

Что вам нужно сделать, так это настроить одно правило пересылки на Vultr Load Balancer.

Правило пересылки 443->443 для TLS на экземпляре

Правило пересылки 443->80 для TLS на LB.

Это заставит LB пересылать весь входящий трафик с определенного порта LB на ваш порт, определенный в NGINX. Затем ваш экземпляр nginx должен направить местоположение на соответствующий proxy_pass, который вы определили.

Что касается проверки работоспособности ... Балансировщики нагрузки Vultr имеют только одну проверку работоспособности, поскольку они были разработаны для работы с отдельными приложениями, находящимися за LB. Однако у вас может быть /health конечная точка, которая при попадании проверяет статус всех ваших других приложений и возвращает 200 ok если они все работают.

У нас есть некоторые подробные документы, доступные на https://www.vultr.com/docs/vultr-load-balancers

Полное раскрытие информации Я технический руководитель по балансировщикам нагрузки для Vultr.

Другие вопросы по тегам