Как размещать веб-приложения с помощью обратного прокси-сервера Nginx в Ubuntu
Как человек с более чем 10-летним опытом работы с системами Linux я могу сказать, что настройка обратного прокси-сервера с помощью Nginx — это один из наиболее распространенных и эффективных способов обработки трафика ваших веб-приложений.
Обратный прокси-сервер действует как промежуточный сервер, который перенаправляет клиентские запросы на соответствующий серверный сервер, и является важным инструментом для балансировки нагрузки, безопасности и производительности.
В этом руководстве я расскажу вам, как настроить Nginx в качестве обратного прокси-сервера в Ubuntu 24.04, а также приведу пример размещения простого веб-приложения на базе Nginx.
Предварительные условия
Прежде чем мы начнем, убедитесь, что у вас есть следующее:
- Сервер Ubuntu 24.04 запущен и работает (вы можете использовать VPS или физический сервер).
- Права root или sudo для выполнения задач системного администрирования.
- Пример веб-приложения, работающего на внутреннем сервере (в этом примере мы будем использовать базовое приложение
Node.js
). - Базовые знания команд Linux и сетевых концепций.
Шаг 1. Установите Nginx в Ubuntu 24.04.
Сначала нам нужно установить веб-сервер Nginx из репозиториев Ubuntu по умолчанию, используя следующую команду.
sudo apt update
sudo apt install nginx
После завершения установки вы можете проверить статус Nginx, чтобы убедиться, что он работает:
sudo systemctl status nginx
Если Nginx не запущен, запустите его командой:
sudo systemctl start nginx
Чтобы убедиться, что Nginx запускается автоматически при загрузке:
sudo systemctl enable nginx
Если на вашем сервере включен брандмауэр UFW, убедитесь, что трафик HTTP (порт 80) разрешен.
sudo ufw allow 'Nginx Full'
sudo ufw enable
Шаг 2. Настройте серверное веб-приложение
В этом примере мы будем использовать простое приложение Node.js
в качестве внутреннего сервера, который будет прослушивать порт 3000
.
Сначала установите Node.js
и npm
на свой сервер:
sudo apt install nodejs npm
Теперь давайте создадим простое веб-приложение Node.js
:
sudo mkdir /var/www/myapp
cd /var/www/myapp
Инициализируйте приложение Node.js
:
sudo npm init -y
Установите Express, простую веб-платформу для Node.js
:
sudo npm install express
Создайте файл app.js
внутри каталога /var/www/myapp
со следующим содержимым:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello, this is a backend app!');
});
app.listen(port, () => {
console.log(`App running on http://localhost:${port}`);
});
Запустите приложение Node.js
.
sudo node app.js
Ваше серверное веб-приложение теперь работает на http://localhost:3000
, и вы можете убедиться в этом, перейдя по следующему адресу в браузере, и вы должны увидеть сообщение «Привет, это серверное приложение!».
http://your-server-ip:3000
Шаг 3. Настройте Nginx в качестве обратного прокси-сервера
Теперь давайте настроим Nginx для пересылки запросов из внешнего мира на серверную часть Node.js
, работающую на порту 3000
.
Сначала создайте новый файл конфигурации в каталоге sites-available
:
sudo nano /etc/nginx/sites-available/myapp
В новом файле добавьте следующую конфигурацию, чтобы указать Nginx пересылать входящие HTTP-запросы на внутренний сервер, работающий на порту 3000:
server {
listen 80;
server_name your_domain_or_ip
; location / { proxy_pass http://localhost:3000; # Forward requests to your backend server proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
После сохранения конфигурации создайте символическую ссылку на каталог sites-enabled
, чтобы включить эту конфигурацию:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
Перед перезапуском Nginx важно убедиться в отсутствии синтаксических ошибок:
sudo nginx -t
sudo systemctl restart nginx
Теперь откройте браузер и перейдите к общедоступному IP-адресу или домену вашего сервера (например, http://your-server-ip
или http://your_domain
).
Вы должны увидеть сообщение «Здравствуйте, это серверное приложение!», что означает, что Nginx успешно пересылает запросы в ваше серверное приложение Node.js
.
Для безопасных соединений вы можете настроить SSL с помощью Let’s Encrypt.
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your_domain_or_ip
Заключение
В этом руководстве мы настроили Nginx в качестве обратного прокси-сервера для пересылки HTTP-запросов серверному веб-приложению Node.js
, работающему на localhost:3000
на сервер Ubuntu 24.04.
Выполнив эти шаги, вы изучили основные концепции обратного проксирования с помощью Nginx и способы размещения простого веб-приложения на базе Nginx. Благодаря этой настройке вы можете легко расширить ее до более сложных приложений и масштабировать свою инфраструктуру по мере необходимости.