Тренируемся локально. WSL. NGINX.
Предисловие
Мы разобрались, как в WSL запустить шаблонный проект и настроить фаервол. Остался один шаг перед тем, как мы пойдем в облако пробовать наши силы на настоящей виртуальной машине. А сейчас мы разберемся с NGINX.
NGINX - это HTTP-сервер с большим количеством возможностей, сред которых нас будут интересовать:
На этом шаге мы разберемся с первыми двумя пунктами.
Но сперва ответим на вопрос "зачем"? Ответ, на смом деле, прост - удобно. В жизни веб-проекта возникаем множество вопрос:
- как мы будем переключаться со старой версии на новую?
- как обеспечить отказоустойчивость? как справиться с повышенной нагрузкой на сайт? как ограничить нагрузку на сервис, чтобы он не подал?
- как логировать входящие соединения?
- как подключить SSL-сертификаты?
- как включить сжатие трафика?
- как настроить маршрутизацию между несколькими сервисами, фронтом, бэком и чем-нибудь ещё?
С этим всем прекрасно справляется NGINX. А наше приложение выполняет одну и так не простую функцию - обслуживает запросы пользователя.
Поехали
Нам понадобятся три терминала WSL с ОС Ubuntu. Открываем.
Сначала почистим и выключим фаервол после наших прошлых экспериментов.
sudo ufw reset sudo ufw disable
Далее устанавливаем HTTP-сервер NGINX.
sudo apt-get install -y nginx
sudo systemctl enable nginx
sudo systemctl is-enabled nginx
Теперь запустим NGINX и проверим его статус:
sudo service nginx start sudo service nginx status
Проверяем работу NGINX в браузере http://127.0.0.1/
Работает! Прекрасно! Идем дальше.
Я хочу запустить два шаблонных проекта ASP.NET Core и настроить NGINX так, чтобы он распределял нагрузку между ними.
NGINX настраивается через текстовые конфигурационные файлы.
Откроем и отредактируем конфигурационный файл в терминале. Делать мы это будем с помощью консольного текстового редактора nano:
sudo nano /etc/nginx/sites-available/default
Удаляем все содержимое и вводим следующие настройки:
upstream backend { server 127.0.0.1:5022; server 127.0.0.1:5122; } server { location / { proxy_pass http://backend; } }
Закрываем редактор сочетанием клавиш Ctrl+X
nano спрашивает: "сохранить ли изменения"? Конечно, да, жмем "y".
Путь к файлу по которому нужно сохранить изменения оставляем без изменений, жмем "Enter".
На всякий случай проверим содержимое файла (перепроверять себя - хорошая привычка)
cat /etc/nginx/sites-available/default
Теперь перезапускаем NGINX, чтобы изменения настроек вступили в силу.
sudo service nginx restart
Далее переходим в другой терминал и запускаем первый проект на порту 5022 (вы уже знаете как это делать)
Затем открываем третий терминал и создаем второй шаблонный проект.
mkdir deploy2production2 cd deploy2production2
Этот проект мы запустим на порту 5122
dotnet run --urls http://127.0.0.1:5122
В итоге, быстро обновляя страницу в браузере, мы видим, что поочередно открывается то deploy2production, то deploy2production2.