Nginx - это широко используемый веб-сервер со многими функциями, включая балансировку нагрузки, обратное прокси-серверирование, кэширование контента, почтовое прокси и многое другое. Это гибкое и надежное решение, известное своей высокой производительностью и эффективным использованием ресурсов. Обратный прокси-сервер управляет входящий трафик и пересылает запросы на серверы бэкэнда, связанные с определенными портами TCP для таких приложений, как Node.js, Odoo, Tomcat и других. В этом уроке вы научитесь настраивать Nginx как обратный прокси на Ubuntu 24.04.

Предпосылки

  • Ubuntu 24.04 VPS.
  • Доступ к корню SSH или пользователь с привилегиями sudo.

Конвенции

1
2
# - данные команды должны выполняться с правами root либо непосредственно от имени пользователя root, либо с помощью команды sudo.
$ - данные команды должны выполняться от имени обычного пользователя

Шаг 1. Обновление системных пакетов

Для начала зайдите в свой Ubuntu 24.04 VPS с помощью SSH:

1
#ssh root@IP_Address -p Port_number

Замените «IP_Address» и «Port_number» фактическим IP-адресом вашего сервера и номером порта SSH. При необходимости замените «root» на имя пользователя вашей учетной записи Sudo.

После входа в систему вы должны убедиться, что все пакеты Ubuntu, установленные на сервере, обновлены. Вы можете сделать это, выполнив следующую команду:

1
# apt update && apt-upgrade -y

Шаг 2. Установите Nginx

Если на вашем сервере Ubuntu 24.04 Nginx еще не установлен, вы можете установить Nginx с помощью команды apt:

1
# apt install nginx -y

После установки Nginx вы можете проверить версию Nginx, и если сервер Nginx работает с командами:

1
2
# nginx -version
nginx version: nginx/1.24.0 (Ubuntu)

Версия Nginx составляет 1,24.0 на момент написания сообщения.

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

Шаг 3. Настройка Nginx в качестве обратного прокси

Теперь, когда Nginx установлен, вы можете настроить его как обратный прокси. Основные файлы конфигурации Nginx хранятся в каталоге /etc/nginx/nginx.conf, а отдельные конфигурации сервера находятся в каталоге /etc/nginx/sites-available/.

Во-первых, вы можете создать новый блок сервера для вашего обратного прокси, перейдя в каталог /etc/nginx/sites-available/:

1
# cd /etc/nginx/sites-available/

и создать новый файл конфигурации, например, reverse-proxy.conf:

1
# nano reverse-proxy.conf

Добавьте обратную конфигурацию прокси. Ниже приведена примерная конфигурация для прокси-сервера, работающего на порту 3000:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
nginx
server {
         listen 80;
        
        server_name yourdomain.com;
       
        location / {
               proxy_pass http://localhost:3000;
               proxy_set_header Host $host;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
               proxy_set_header X-Forwarded-Proto $scheme;
       }
}

proxy_pass: Данная директива определяет сервер бэкэнда, куда следует направлять запросы. Директивы proxy_set_header необходимы для сохранения информации о клиенте, что полезно для регистрации и обработки бэкэнда.

Теперь вы можете включить конфигурацию, создав символическую ссылку в каталоге с поддержкой сайтов:

1
# ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf

Проверьте конфигурацию Nginx, чтобы убедиться, что нет синтаксических ошибок:

1
# nginx -t

Если тест будет успешным, перезапустите Nginx, чтобы применить изменения:

1
# systemctl restart nginx

Откройте веб-браузер и посетите http://yourdomain.com. Если все настроено правильно, вы должны увидеть контент, обслуживаемый вашим бэкэнд-приложением.

Шаг 4. Настройка SSL

С обратным прокси-сервером, настроенным для вашего домена, теперь вы можете защитить его с помощью SSL, вы можете получить бесплатный SSL-сертификат с помощью Let’s Encrypt. Вот быстрый способ сделать это:

Установите Certbot с командой:

1
# apt install certbot python3-certbot-nginx

Получите и установите SSL-сертификат для вашего домена:

1
# certbot --nginx -d yourdomain.com

Certbot автоматически настроит Nginx для SSL и перезагрузит сервис. Вы можете проверить SSL, посетив https://yourdomain.com.

Завершение

Вы успешно настроили Nginx как обратный прокси на Ubuntu 24.04. Независимо от того, выполняете ли вы прокси-запросы в одном приложении или используете Nginx для балансировки нагрузки на нескольких серверах, это важный инструмент в наборе инструментов любого системного администратора.