Drno, "^~" - это не регулярка, это выключить дальнейшую обработку location c регулярками (символ "!" был занят поэтому Игорь Сысоев выбрал "^" в качестве символа отрицания).
Вот здесь вполне адекватно описано Алгоритм выбора location в Nginx
Там, правда, парсер некоторые символы пожрал, поэтому может быть не сразу понятно о чём речь.
Andrey Barbolin
ssl on; устаревшая директива, не надо её использовать.
Вложенный location здесь не нужен.
"^~" - отказаться от обработки location c регулярками и обработать запрос в текущем location, здесь не нужен.
Drno, можно в daemon.json отключить Docker-у способность добавлять правила в фаирвол, только придётся правила для каждого контейнера самому писать, понадобится какая-то автоматизация, а это это не так удобно.
И попробуй перезапустить контейнер через down и up -d и убедись, что порт по прежнему заблокирован для доступа извне, а то Docker может надобавлять разрешающих правил, которы собой перекроют имеющиеся запрещающие если этот нюанс не учтён.