Да, номер порта нельзя указывать в DNS A записях. Я никогда не работал с обратным прокси, но я не уверен, что полностью понимаю, зачем нужен номер порта в записи DNS. Достаточно указать хостнейм (например, hass.mydomain.com), чтобы он разрешился в IP-адрес, на который будет приходить трафик к nginx. Это может быть внутренний IP nginx или внешний IP роутера с переадресацией трафика к nginx. Когда браузер обращается к hass.mydomain.com, он разрешает хостнейм в IP-адрес. Опять же, всё должно быть в порядке, если это либо внутренний IP nginx в твоей локальной сети, либо внешний IP твоего шлюза с переадресацией на nginx. Браузер отправит запрос на <ip-адрес>:443 или <ip-адрес>:80. Этот запрос также будет включать заголовок Host: hass.mydomain.com, который сообщает nginx, куда отправлять трафик. Если ты не используешь переадресацию порта и используешь локальную DNS запись для hass.mydomain.com, nginx должен прослушивать порты 80 и 443. Возможно, поэтому тебе и нужен номер порта в DNS?
В любом случае, вернемся к твоему вопросу... Если Cloudflare предоставляет только DDNS услуги и ты используешь SSL сертификат, предоставленный ими с nginx, то веб-трафик не должен поступать от них, за исключением, возможно, трафика для проверки хоста, необходимого для обновления сертификата. Я не уверен, нужно ли это или нет, но тебе следует знать или иметь возможность выяснить.
Что касается Cloudflare DDNS, они просто принимают хостнейм и IP-адрес, предоставленные (вероятно, клиентом DDNS, работающим в твоей сети), и публикуют это в публичном DNS. Клиентские компьютеры используют публичный DNS для разрешения твоего FQDN (hass.mydomain.com) в твой IP-адрес, а затем устанавливают соединение с IP-адресом. Именно эти соединения ты пытаешься заблокировать.
Если я правильно понимаю, тебе просто нужно отредактировать переадресацию порта, чтобы ограничить входящие адреса, которые могут подключаться к nginx. Если тебе нужно разрешить Cloudflare для проверки сервера и обновления сертификатов, ты можешь разрешить только их блок адресов в ограниченных адресах. Если ты хочешь отключить всё, ты, вероятно, сможешь использовать RFC1918 адрес или какой-то другой адрес, который не должен быть "снаружи".
Другой вариант — не ограничивать адреса источника в конфигурации переадресации порта и добавить политику брандмауэра для блокировки трафика. То, что тебе нужно сделать, зависит от зоны брандмауэра, в которой находится nginx, но суть в том, что тебе нужно убедиться, что трафик из внешней сети к nginx заблокирован, добавив новую политику непосредственно выше политики "Авто переадресация порта", созданной переадресацией порта. Если тебе нужно разрешить Cloudflare для отправки входящих запросов для проверки хоста, ты можешь обновить это правило, чтобы указать их адрес(а) в поле IP-адреса источника и использовать флажок "Сопоставить противоположное", чтобы разрешить им проходить, но заблокировать всё остальное.
Если ты хочешь, чтобы хост nginx имел доступ к интернету, тебе понадобится политика выше той, что я только что описал, чтобы разрешить только возвратный трафик из внешней сети к nginx.
Я не уверен, что это всё на 100% верно. Я оставляю за тобой право перепроверить, чтобы всё работало так, как тебе нужно. Я предполагаю, что если я ошибся, кто-нибудь придёт и поправит меня...