Предоставьте нашему серверу NodeJS возможность получать HTTP-запросы.

Когда я учился в колледже и работал с NodeJS, проблема, с которой я часто сталкивался во время хакатонов, проектов колледжа и т. д., заключалась в размещении моего проекта в Интернете. У меня все работало локально, но ощущение демонстрации на устройстве экзаменатора дало совсем другой толчок.

Следовательно, в этой статье мы обсудим, как мы можем предоставить нашему серверу NodeJS возможность стабильно и надежно получать HTTP-запросы через Интернет, используя обратный прокси-сервер nginx.

В качестве предварительного условия для этой статьи у вас должен быть сервер NodeJS, работающий на экземпляре EC2. Чтобы настроить это, вы можете следовать моей предыдущей статье в серии.

Почему Nginx?

Мы будем использовать Nginx в качестве обратного прокси-сервера, чтобы абстрагировать наши серверные конфигурации от внешнего мира. Все виды запросов, отправляемых на наш сервер, должны будут пройти через этот обратный прокси-сервер, прежде чем достигнуть сервера.

Есть несколько преимуществ использования обратного прокси-сервера, некоторые из них

  • Безопасность. Обратные прокси-серверы играют ключевую роль в построении архитектуры нулевого доверия для организаций, которая защищает конфиденциальные бизнес-данные и системы. Вы можете заносить в белый или черный список определенные конечные точки, контролировать ограничения ресурсов, разрешать только определенные методы HTTP, добавлять общие заголовки ко всем запросам и т. д. через обратный прокси-сервер.
  • Масштабируемость: с помощью обратного прокси-сервера количество серверов можно увеличивать и уменьшать в зависимости от колебаний объема трафика, сохраняя все эти операции абстрагированными от клиента.
  • Конфигурация. Мы можем настроить такие параметры, как период ожидания, по истечении которого сервер будет отображать ошибку 503, для указания протокола HTTP, который будет использовать служба.
  • Кэширование. Компании, обслуживающие большое количество статического контента, такого как изображения и видео, могут настроить обратный прокси-сервер для кэширования части этого контента.
  • Ведение журнала: Nginx можно использовать для регистрации входящих заголовков, возвращаемых кодов состояния и т. д. для всех входящих запросов.

Есть много других вариантов использования обратного прокси, но это выходит за рамки этой статьи.

Шаги по установке Nginx

Выполните следующие команды, чтобы установить Nginx.

sudo apt update
sudo apt install nginx

Чтобы убедиться, что установка прошла успешно, введите

systemctl status nginx

Вы должны увидеть следующий вывод

Как подтверждает этот вывод, служба успешно запущена. Однако лучший способ проверить это — запросить страницу у Nginx.

Вы можете получить доступ к целевой странице Nginx по умолчанию, чтобы убедиться, что программное обеспечение работает правильно, перейдя по IP-адресу вашего сервера.

Итак, вы увидите следующую страницу, перейдя к

http://<YOUR_SERVER_IP>/

Настроить перенаправление трафика на экспресс-сервер

Когда мы вводим наш IP-адрес в браузере, мы видим страницу Nginx по умолчанию, но мы хотим получить доступ к нашему экспресс-API, когда мы запрашиваем IP-адрес нашего сервера.

Для этого нам нужно перейти в следующий каталог, где находится вся наша конфигурация Nginx.

cd /etc/nginx

В этом каталоге есть файл с именем nginx.conf, вся конфигурация Nginx присутствует в этом файле.

Внутри блока http этого файла есть строка

include /etc/nginx/conf.d/*.conf;

Эта строка означает, что нужно включить любую конфигурацию, записанную в любом файле с расширением .conf, в каталог /etc/nginx/conf.d/. Итак, в этом каталоге мы будем писать нашу конфигурацию.

Создайте файл с именем configuration.conf (файл может иметь любое имя, оканчивающееся на .conf).

и добавьте следующий блок сервера в файл

server {
server_name <SERVER_IP>;
location / {
        proxy_pass http://127.0.0.1:3000;
      }
}

Примечание: мы упомянули порт как 3000, потому что в предыдущей статье мы настроили сервер NodeJS, работающий на ПОРТ 3000, поэтому убедитесь, что вы сохранили порт в качестве сообщения, на котором работает ваш сервер.

Теперь, чтобы проверить, является ли наша конфигурация Nginx синтаксически правильной, мы запускаем следующую команду.

sudo nginx -t

Это даст нам следующий результат.

Теперь, поскольку наша конфигурация действительна, мы можем перезапустить обратный прокси-сервер Nginx, чтобы увидеть нашу конфигурацию в действии.

sudo service nginx restart

После этого, если вы зайдете в браузер и введете IP-адрес своего сервера, вы увидите следующий вывод.

Примечание. Вы получите этот вывод, если вы следовали инструкциям из предыдущей статьи. Если у вас есть какой-либо другой экспресс-сервер, вы увидите возвращаемое значение его маршрута по умолчанию.

Заключение

Следуя этой статье, ваш сервер NodeJS будет доступен в Интернете, и вы сможете получать через него HTTP-запросы. Но это все же не идеальный способ настроить сервер удаления, поскольку HTTP не является безопасным протоколом.

Поэтому в следующей статье серии мы увидим, как настроить Certbot на экземпляре ec2 и включить HTTPS для входящих запросов на наш сервер.

Рекомендации