У меня есть сервер, развернутый с бэкэндом с использованием 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/;
}
}