Как в Docker на одном IP-адресе разместить несколько сайтов?
Поднять ещё один контейнер nginx как единую точку входа, слушающую внешние порты 80 и 443.
В зависимости от домена прокси на тот или иной внутренний ip контейнера-сайта.
Можно докер-контейнеры с сайтами стартовать на разных портах. Например, выделить контейнеру порт 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 должны быть открыты на сервере, этого достаточно.