Мне нужно настроить обратный прокси-сервер nginx перед приложением nodejs, которое необходимо
для развертывания в Google Cloud Run.
Cloud Run уже предоставляет обратный прокси-сервер - Cloud Run Proxy. Это сервис, который балансирует нагрузку, предоставляет настраиваемые домены, аутентификацию и т. Д. Для Cloud Run. Однако в дизайне Cloud Run нет ничего, что мешало бы вам использовать Nginx в качестве обратного прокси внутри вашего контейнера. В дизайне Cloud Run нет ничего, что могло бы помешать вам использовать Nginx в качестве отдельного интерфейса контейнера для другой службы Cloud Run. Обратите внимание, что в последнем случае вы будете платить вдвое больше, чем вам потребуется две службы Cloud Run, одна для URL-адреса службы Nginx и другая для приложения узла.
Варианты использования - необходимо обслуживать ресурсы, распакованные через nginx (я не хочу
служебный узел для сжатия gzip) - для блокировки небольших DDOS-атак
Вы можете выполнить сжатие в приложении узла или в Nginx. Результат тот же. Влияние на производительность одинаково. Nginx не обеспечивает никаких накладных расходов. Nginx может быть более удобным в некоторых случаях.
Ваш комментарий для блокирования небольших DDOS-атак. Cloud Run автомасштабирует, что означает, что каждый экземпляр Cloud Run будет иметь ограниченное воздействие DOS. По мере увеличения трафика DDOS Cloud Run будет запускать больше экземпляров вашего контейнера. Без предварительного запроса Cloud Run прекратит масштабирование до 1000 экземпляров. Nginx не предоставит никаких преимуществ, которые я могу придумать для смягчения атаки DDOS.
Я не нашел учебника по настройке nginx и узла в облачной среде.
Мне неизвестен какой-либо конкретный документ, касающийся Nginx и Cloud Run. Однако вам это не нужно. Все документы, касающиеся Nginx и Docker, будут в порядке. Если вы хотите запустить Nginx в том же контейнере, что и приложение вашего узла, вам нужно написать собственный скрипт для запуска Nginx и Node.
Также мне нужно установить PM2 для узла.
Не возможно. PM2 имеет пользовательский интерфейс и графический интерфейс. Cloud Run предоставляет только $ PORT через HTTP из экземпляра Cloud Run.
Как сделать эту настройку в докере? также, как я могу настроить nginx перед
развертывание
В Интернете существует множество учебных пособий по настройке Nginx и Docker.
Два примера ниже. В интернете сотни примеров.
Я ответил на каждый ваш вопрос. Теперь несколько советов:
- Использование Nginx с Cloud Run не имеет никакого смысла в приложении Node.js. Просто запустите приложение вашего узла и дайте Cloud Run Proxy выполнить свою работу.
- Сжатие сильно загружает процессор. Cloud Run предназначен для небольших, быстрых и компактных микросервисов в стиле HTTP. Вы будете платить за увеличенное время процессора. Если у вас есть контент, который нужно сжать, сначала сожмите его и подайте сжатый контент. Есть случаи, когда сжатие в Cloud Run полезно и / или правильно, но посмотрите на свой дизайн и по возможности оптимизируйте. Статическое содержимое должно обслуживаться, например, Cloud Storage.
Cloud Run может легко обрабатывать приложение Node.js с отличной производительностью и масштабируемостью при условии соблюдения его критериев проектирования и назначения.
Основные факторы, которые следует учитывать:
- Низкая стоимость, вы платите только за запросы. Перекрывающиеся запросы имеют ту же стоимость, что и один запрос.
- Stateless. Контейнеры закрываются, когда в них нет необходимости, что означает, что вы должны проектировать для перезапусков. Сохраните состояние в другом месте, например, в базе данных.
- Обслуживает только трафик через порт $ PORT, который сегодня равен 8080.
- Публичный трафик может быть HTTP или HTTP. Трафик от прокси-сервера Cloud Run к континенту - HTTP.
- Пользовательские доменные имена. Cloud Run делает HTTPS для URL очень простым.