Обслуживание статических файлов Vue.js и приложения Django, запущенного на gunicorn, через Nginx
У меня есть веб-бэкенд, реализованный на Django и работающий на Gunicorn. Кроме того, у меня есть приложение Vue.js, которое использует этот бэкенд. Я хочу запустить их оба на nginx, а также сделать HTTPS-конфигурации.
Вот как выглядит мой файл "/etc/nginx/nginx.conf":
...
server {
server_name .website.com;
listen 80;
return 307 https://$host$request_uri;
}
server {
location / {
proxy_set_header Host $host;
proxy_pass http://localhost:8080; # where the Django app over gunicorn is running
}
location /static {
root /code/frontend/dist/; # static frontend code created with vite on vue.js
autoindex on;
index index.html;
try_files $uri $uri/ /index.html;
}
# ssl configs
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/website.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/website.com/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
}
Оба они, Django и часть Vue.js, размещены в одном контейнере Docker. Порты 80 и 8080 этого контейнера сопоставлены с портами 80 и 8080 главного компьютера.
Порты443, 8080 и 80 открыты на машине для входящих соединений. Отправка post-запроса на http://website.com:8080/bla
возвращает правильные значения, что означает, что бэкенд, похоже, работает, но только на http, а не на https.
По-прежнему, когда я захожу на "website.com", я получаю ошибку "This site can't be reached". Что именно я делаю не так и как я могу запустить оба на nginx и оба через ssl/https?