Назад | Перейти на главную страницу

Балансировщик нагрузки nginx с обновлением сертификата / https и letsencrypt

У меня есть небольшой экземпляр Linux VPS, настроенный с nginx для прокси-запросов в качестве балансировщика нагрузки для нескольких серверов приложений.

Весь трафик входит в https://app.example.com прокси на эти вышестоящие серверы. Пример конфигурации nginx для балансировщика нагрузки:

upstream app_servers {
    server app-1.example.com;
    server app-2.example.com;
}

server {
    listen 80;
    listen 443 ssl;
    include snippets/ssl-app.example.com.conf;
    include snippets/ssl-params.conf;

    server_name app.example.com;

    root /var/www/html;

    location / {
            # Set proxy headers
            proxy_set_header        Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For 
            $proxy_add_x_forwarded_for;

            proxy_pass http://app_servers;
    }

    location ~ /.well-known {
            allow all;
    }

}

Я настроил letsencrypt и получил сертификат для app.example.com перед настройкой прокси, и теперь у меня возникли проблемы с выяснением, как настроить nginx для проксирования всего на вышестоящие app_servers, за исключением чего-либо в /.well-known, чтобы certbot мог локально обновите сертификаты SSL на сервере, на котором запущен этот балансировщик нагрузки nginx. Любые предложения о том, как перенаправить app.example.com/.well-known/ на локальный путь, который letsencrypt certbot может использовать и успешно использовать во время обновления?


Обновление, гарантирующее, что .well-known существует в / var / www / html (Debian), и установка root в conf позволила certbot обновиться должным образом. Обновлен фрагмент nginx conf, чтобы отразить это.

Установка root на веб-корневой каталог nginx по умолчанию в Debian /var/www/html где certbot изначально был настроен для указания на хорошо известную папку, проблема решена.

upstream app_servers {
  server app-1.example.com;
  server app-2.example.com;
}

server {
  listen 80;
  listen 443 ssl;
  include snippets/ssl-app.example.com.conf;
  include snippets/ssl-params.conf;

  server_name app.example.com;

  root /var/www/html;

  location / {
    # Set proxy headers
    proxy_set_header        Host $host;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For 
    $proxy_add_x_forwarded_for;

    proxy_pass http://app_servers;
  }

  location ~ /.well-known {
    allow all;
  }
}