
В настоящее время у нас есть решение с собственным хостингом, которое позволяет нашим клиентам добавлять CNAMES для доступа к своему контенту через собственные домены.
Мы переносим весь стек в Google Cloud, при этом основной продукт размещается на развернутой платформе Firebase Hosting с бессерверными функциями, хранилищем и базами данных Firestore.
Я знаю, что мы можем вручную и программно добавлять CNAME в нашу учетную запись хостинга Firebase, но в Firebase существует жесткое ограничение в 20.
Мой вопрос: предлагает ли GCP решение, при котором мы можем программно добавлять CNAMES, генерировать самоподписанный сертификат и направлять их через прокси на наш URL-адрес хостинга Firebase, сохраняя при этом исходный CNAME, но обслуживая наш контент Firebase? Или рекомендуемые подходы для этого стека?
Чего мы не хотим делать:
- иметь несколько развертываний Firebase с 20 доменами каждое
- Добавьте любые размещенные решения (вычислительный движок и т. д.) в качестве посредника
- Отойдите от Firebase
Мы обратились к команде Firebase, но нам порекомендовали, как указано в пункте 1 выше, разделить их между несколькими развертываниями, поскольку они не имели видимости для других продуктов GCP.
решение1
Ответ на ваш вопрос заключается не в том, сколько имен хостов может поддерживать Firebase, а в том, сколько имен хостов может поддерживать SSL.
Рекомендация по сертификату SSL заключается в том, что в поле SAN сертификата SSL можно поместить не более 20 записей. Это называется ограничениями на выпуск сертификатов SSL. Некоторые сертификаты SSL поддерживают до 100*, но Firebase поддерживает 20. Чем больше записей, тем больше накладных расходов на обработку каждого соединения. Каждый раз, когда вы добавляете новый домен в сертификат, все существующие домены должны быть повторно проверены, поскольку выпускается новый сертификат.
Примечание: я не включаю подстановочные знаки (*.example.com)
*Примечание:RFC5280не указывает максимум для SubjectAltNames. Microsoft устанавливает максимальный размер закодированного расширения в 4 КБ (связь).