Можно докер-контейнеры с сайтами стартовать на разных портах. Например, выделить контейнеру порт 81 как-то так:
docker run -d -p 81:80 testcont.site
То есть, сайт будет локально доступен по
serverip:81
А в nginx сделать проксирование на контейнер:
server {
listen 80;
server_name testcont.site;
access_log /var/log/nginx/testcont.site-access.log;
error_log /var/log/nginx/testcont.site-error.log;
location / {
proxy_pass http://127.0.0.1:81;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
Таким образом, при переходе на tescont.site, nginx переадресует запрос на внутренний контейнер 127.0.0.1:81.
Https проще всего настроить через
Certbot, который сам получит сертификаты и настроит передаресацию с http на https в конфигах сайтов.
Разумеется, порты 80 и 443 должны быть открыты на сервере, этого достаточно.