Насколько я понимаю, nginx
хорошо подходит для обслуживания статического контента. Но я не могу найти никакой информации о том, насколько хорошо он подходит для обслуживания очень большого количества статического контента. Скажем, я использую nginx
как веб-сервер и node.js
в качестве сервера приложений я могу настроить nginx
как обратный прокси-сервер и балансировщик нагрузки, поэтому он дает мне возможность создавать несколько node.js
экземпляров (например, под обратным прокси-сервером я могу, скажем, 5 запущенных node.js
Программы). Архитектура будет выглядеть так изображение здесь. Насколько я понимаю, довольно легко масштабировать веб-сайт для обслуживания динамического контента (все, что вам нужно сделать, это создать несколько nodejs
приложения) и nginx
обслуживает статический контент. Но что, если у меня куча запросов на nginx
сам для статического контента и одиночного nginx
не могу просто справиться со всеми. Думаю, я могу создать несколько nginx
экземпляров, но мне кажется, что это было бы неэффективно. я могу сделать nodejs
приложения для обслуживания статического контента, но, как я понимаю, из-за его однопоточной природы nodejs
это тоже было бы неэффективно. У тебя есть мысли о том, как управлять nginx
для большого количества статического контента? Или предоставьте любую полезную информацию
Любая большая система статического контента, конечно, любая, называемая сетью доставки контента, будет иметь несколько узлов (веб-сервер) по разным причинам:
Знайте пределы одного узла. Продвиньте один узел как можно дальше при тестировании и производстве, пробуя различные конфигурации и размеры. Когда это превышено, выполните горизонтальное масштабирование до нескольких узлов с помощью выбранного решения для балансировки нагрузки: прокси-сервер в стиле балансировки нагрузки, DNS или уловки сетевой маршрутизации. Или попробуйте коммерческую услугу CDN.
Любая «неэффективность» в работе множества веб-серверов не имеет значения, если совокупные ресурсы CDN соответствуют требованиям. Это помогает горизонтально масштабироваться, поскольку экземпляры виртуальных машин среднего размера, как правило, недороги, и вы можете развернуть многие из них.
Из документации nginx вы можете попробовать «Оптимизация производительности для обслуживания контента». https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/
Возможно, вам потребуется предсказать или указать, сколько тяжелых нагрузок считается тяжелым для вашей системы.
Проведите тест производительности и проверьте, не может ли система с помощью тех, кто оптимизирует, по-прежнему обрабатывать запрос, если да, добавление дополнительных nginx - это единственный выход, я думаю.
Ноты: