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

Пользовательский интерфейс Swagger не работает после обновления сертификата Let's Encrypt

У меня есть сервер, развернутый с бэкэндом с использованием Django и контейнера Docker + nginx. Бэкэнд доступен, все пути API (используя djangorestframework) тоже работают, но интерфейс Swagger показывает invalid в правом нижнем углу и Undocumented TypeError: Failed to fetch при попытке получить доступ к чему-либо в чванстве. Это началось вчера, когда сервер Let's encrypt сертификат был автоматически обновлен с использованием certbot --renew. Таким образом, при доступе к маршрутам API вручную или локальном развертывании API все работало нормально.

Я попытался повторно развернуть и перезапустить сервер, и я посетил validator.swagger.io, который должен отлаживать недействительный значок, но там он действителен! Есть ли способ вручную проинформировать пользовательский интерфейс swagger об этом изменении?

Вот файлы конфигурации:

version: '3.7'

services:
  web:
    build: ./app
    command: python manage.py runserver 0.0.0.0:8080
    volumes:
      - ./app/:/usr/src/app/
    ports:
      - 8080:8080
    env_file:
      - ./.env.dev
    depends_on:
      - db
  db:
    image: postgres:12.0-alpine
    volumes:
      - DB Path
    environment:
      - DB Passwords
volumes:
  postgres_data:

В api-site.conf сервера:

server {
  server_name api.DOMAIN.XYZ;

  location / {
      proxy_set_header   X-Forwarded-For $remote_addr;
      proxy_set_header   Host $http_host;
      proxy_pass         "http://127.0.0.1:8080";
  }
#    listen 443 ssl; # managed by Certbot
#    ssl_certificate /etc/letsencrypt/live/DOMAIN.XYZ/fullchain.pem; # managed by Certbot
#    ssl_certificate_key /etc/letsencrypt/live/DOMAIN.XYZ/privkey.pem; # managed by Certbot
#    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
#    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/DOMAIN.XYZ/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/DOMAIN.XYZ/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = api.DOMAIN.XYZ) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

  server_name api.DOMAIN.XYZ;
    listen 80;
    return 404; # managed by Certbot
}

И nginx.config для контейнера докеров:

upstream django_app {
    server web:80;
}

server {
    listen 80;

    location / {
        proxy_pass http://django_app;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /static/ {
        alias /home/app/web/static_files/;
    }
}