Ответ 1
Предположим, вы планируете разместить несколько сайтов на своем новом VPS. Посмотрите на инструменты, которые могут понадобиться для каждого сайта.
Серверы HTTP
Веб-сайт "Альфа" просто состоит из некоторого чистого HTML, CSS и Javascript. Содержимое является статическим.
Когда кто-то посещает веб-сайт Alpha, их браузер выдаст HTTP-запрос. Вы настроили (через DNS и конфигурацию сервера имен), которые запрашивают перенаправление на IP-адрес вашего VPS. Теперь вам нужен ваш VPS, чтобы иметь возможность принять этот HTTP-запрос, решить, что с ним делать, и выдать ответ, который может понять браузер посетителя. Вам нужен HTTP-сервер, например Apache httpd или NGINX, и позвольте сказать, что вы проводите некоторые исследования и в конечном итоге принимаете решение о NGINX.
Серверы приложений
Веб-сайт "Бета" является динамическим, написанным с использованием веб-платформы Django.
WSGI - это протокол, который описывает интерфейс между приложением Python (приложение django) и сервером приложений. Итак, теперь вам нужен сервер приложений WSGI, который сможет понимать веб-запросы, делать соответствующие "вызовы" для приложения различными объектами и возвращать результаты. Здесь у вас много вариантов, включая gunicorn и uWSGI. Скажем, вы проводите некоторое исследование и в конечном итоге решаете вопрос о uWSGI.
uWSGI может принимать и обрабатывать HTTPS-запросы для статического контента, поэтому, если бы вы хотели, чтобы сайт Alpha полностью обслуживался NGINX, а бета-версия сайта полностью поддерживалась uWSGI. И это было бы так.
Обратные прокси-серверы
Но uWSGI имеет низкую производительность при работе со статическим контентом, поэтому вы предпочитаете использовать NGINX для статического контента, такого как изображения, даже на бета-версии сайта. Но тогда что-то должно было бы различать запросы и отправлять их в нужное место. Возможно ли это?
Оказывается, NGINX - это не только HTTP-сервер, но и обратный прокси-сервер: он способен перенаправлять входящие запросы в другое место, например, ваш сервер приложений uWSGI или многие другие места, собирая ответ (-ы) и отправляя их обратно первоначальному запросчику. Потрясающие! Таким образом, вы настраиваете все входящие запросы для перехода в NGINX, который будет обслуживать статический контент или, при необходимости, перенаправлять его на сервер приложений.
Балансировка нагрузки с несколькими веб-серверами
Вы также размещаете сайт Gamma, который является популярным на международном уровне блоком и получает тонну трафика.
Для Gamma вы решили настроить несколько веб-серверов. Все входящие запросы отправляются на ваш исходный VPS с помощью NGINX, и вы настраиваете NGINX для перенаправления запроса на один из нескольких других веб-серверов на основе циклического режима и возвращаете ответ исходному реквестеру.
HAProxy - это веб-сервер, который специализируется на балансировке нагрузки для сайтов с высоким трафиком. В этом случае вы могли использовать NGINX для обработки трафика для сайта Gamma. В других сценариях можно настроить кластер высокой доступности: например, отправить все запросы на сервер, например HAProxy, который интеллектуально перенаправляет трафик на кластер серверов nginx, аналогичный вашему исходному VPS.
Сервер кэширования
Сайт Gamma превысил пропускную способность вашего VPS из-за огромного объема трафика. Скажем, вместо этого вы разместили сайт Delta, и причина, по которой ваш веб-сервер не может обрабатывать Delta, объясняется популярной функцией, которая очень насыщена содержанием.
Кэш-сервер может понять, какой медиа-контент часто запрашивается и хранить этот контент по-разному, чтобы его можно было быстрее обслуживать. Это достигается за счет сокращения операций ввода-вывода на диске; популярный контент может быть сохранен в памяти или виртуальной памяти. Вы можете решить объединить свой существующий стек NGINX с технологией, например Лак или Memchached, чтобы более эффективно использовать этот тип оптимизации и веб-сайт сервера Gamma.