SoT
Можете объяснить этот момент?
MP4 можно отдавать по разному. Можно целиком, и тогда нужно менять дефолтные значения nginx, потому как 2Гб слишком много для этого, да и вообще этот способ неприемлем для такого размера.
Можно отдавать по частям — потоком, т.е. используя HLS/HDS/MPEG-DASH, а то и вовсе через RTMP и тогда nginx должен быть собран с модулями реализующими этот функционал.
Помимо прочего при пиковой нагрузке все упрется либо в сеть либо в IO (операции ввода вывода дисковой системы) , поэтому если хотите реализовывать всё сами придется брать несколько серверов, на них монтировать файловую систему
tmpfs и размещать ваш видеофайл непосредственно в ОЗУ. Т.е. при размере файла в 2Гб, желательно на сервере иметь как минимум 4Гб ОЗУ ну и не самый слабый процессор. Выбор сервера/воркера для работы с клиентом в простейшем случае можно поручить алгоритму
round-robin, в более сложных случаях если сервера находятся в разных регионах, то необходимо отдавать ближайший до клиента.
Помимо прочего должно быть ПО мониторинга нагрузки, позволяющее развернуть необходимое количество серверов для отдачи статики из заранее приготовленного образа, а также «потушить» их когда нагрузка спадёт.
То что описал, это очень краткое описание сложного пути: Всё делать самому. Как вы уже поняли никаких хостингов использовать не получится, выбор только облака.
Второй путь дешево и сердито (в прямом смысле), разворачиваем где попало один сервер, заключаем договор с каким-нибудь
CDN-провайдером, в РФ их например пара на слуху CDNVideo и NGENIX оба умеют стримить видео, оба умеют геолокацию (т.е. отдавать с ближайшего к клиенту сервера, что хорошо для уменьшения задержки), и на этом вся наша работа
как бы заканчивается. (На самом деле все эти CDN работают через одно место, но таки работают. ) Если стримить видео нужно не только по РФ, то можно опять таки воспользоваться AWS CloudFront или Azure CDN есть и «необлачные» CDN работающие на весь мир, но это не мой выбор.