Новости
Семь Чёрных пятниц на неделе — и все в Serverspace!
Serverspace Black Friday
KI
11 ноября 2022
Обновлено 16 ноября 2022

Конфигурирование обратного прокси на Ubuntu Server 22.04 с помощью Nginx

Linux Nginx Python Ubuntu

Введение

Обратный прокси-сервер – эффективный метод для доступа сервера приложений к интернету. Node.js или Flask обеспечивает доступ к приложению в локальной сети с помощью TCP. С целью получению доступа к приложению удалённо, необходимо развернуть обратный прокси-сервер. Сперва клиент запрашивает доступ к приложению и получает контент из сервера без необходимых настроек, согласно с требованием клиента.  В этом руководстве вы сможете с легкостью настроить Nginx, переадресуете нужные запросы клиента. Отсутствует сервер с целью тестирования приложений? Не проблема. Рассмотрим настройку тестового приложения на Gunicorn WSGI-сервере.

Подготовка к установке

Необходимо настроить Ubuntu Server 22.04 в соответствии с руководством из нашего сайта.
Адрес сервера в этом руководстве будет называться ip_address. К примеру, http://127.0.0.1:8000 стандартный адрес для библиотеки Gunicorn. В случае отсутствия настроенного сервера приложений для тестов, можно будет развернуть Gunicorn, который предоставляет сервер.
При помощи Nginx, можно настроить доменное имя, при обращении по имени домена, web-браузер подключает по нужному адресу.

Этап 1 – Скачивание и установка Nginx

Первым делом обновим индексы пакетов программного обеспечения и установим пакет nginx:

apt update
apt install nginx

Выбираем “y” и установим пакет. Во время установки могут возникнуть ошибки связанные с “E: Sub-process /usr/bin/dpkg returned an error code (1)”.

Открываем файл и закомментируем строку связанную с IPv6, сохраняем внесённые изменения и выходим из файла.:

vim /etc/nginx/sites-available/default
#listen [::]:80 default_server; # закомментируем строку и выходим ESC и :wq! Сохранив файл.

Выполним команду, чтобы корректно сконфигурировать установочный пакет:

dpkg --configure -a

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

service nginx status

Разрешим правило подключения Nginx с помощью ufw:

ufw allow ‘Nginx HTTP’

В следующем этапе настроим конфигурацию серверной части и протестируем конфигурацию.

Этап 2 – Конфигурирование серверной части

В каталоге /etc/nginx/sites-available создадим файл с названием нашего домена:

vim /etc/nginx/sites-available/test_domain.ru;

Затем добавьте кусок кода в файл и замените test_domain.ru и ip_addres_app на свой адрес. Если нет сервера, чтобы тестировать приложения, то замените на http://127.0.0.1:8000 – этот адрес является стандартным адресом Gunicorn. Которую мы рассмотрим на третьем этапе.

server {
listen 80;
listen [::]:80; #при возникновении ошибки во время проверки nginx -t, закомментировать строку
server_name test_domain.ru
www.test_domain.ru;
location / {
proxy_pass http://127.0.0.1:8000;
include proxy_params;
}
}

Сохраним и выполним выход выполнив ESC и :wq!

Конфигурация начинается со стандартного прослушивания порта 80 и будет отправлять ответ на запросы test_domain.ru. Обратный прокси конфигурируется при помощи файла proxy_params в каталоге /etc/nginx/proxy_params.

HTTP-запросы состоят из заголовков, содержащий информацию об IP-адресе и о файлах cookie. В файле proxy_params заранее прописаны рекомендуемы параметры:

proxy_set_header Host $http_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;

http_host – содержит начальный хост, запрошенный клиентом, который в свою очередь является доменом веб-сайта и портом;
remote_addr – заголовок всегда содержит один IP-адрес, принадлежащий удалённому хосту;
proxy_add_x_forwarded_for – содержит IP-адрес хоста, отправивший запрос. Также есть возможность сохранять список IP-адресов. Первый считается исходный IP-адрес хоста, далее идёт список всех IP-адресов обратных прокси-серверов, через которые прошёл запрос.
scheme – строка хранящая протокол, который используется исходным хостом с целью подключения. Создадим символическую ссылку на файл test_domain.ru:

ln -s /etc/nginx/sites-available/test_domain.ru /etc/nginx/sites-enabled/

Протестируем nginx с ключом -t:

nginx -t

Перезапустим службу:

service nginx restart

На данный момент Nginx настроен с обратным прокси. Следующим этапом будет установка и настройка сервер тестирования приложений.

Этап 3 – Тестирование обратного прокси при помощи Gunicorn

После запуска web-сервера Nginx, можно проверить на работоспособность с помощью web-браузера, в адресной строке указав название домена.

Скачаем и установим пакет Gunicorn, который является сервером Python WSGI и работает непрерывно с обратным прокси Nginx.

apt install gunicorn

Есть возможность установить Gunicorn на прямую через “pip”, для последней версии, которая может быть связана с виртуальной средой Python.

Напишем функцию, которая будет возвращать “New WSGI server”. Создадим файл:

vim wsgi.py

Вставим кусок кода:


def wsgi(environ, start_response):
start_response("200 OK", [])
return iter([b"Welcome, to new wsgi server"])

Запустим Gunicorn сервер, укажем название файла без расширения и название функции:

gunicorn --workers=2 wsgi:wsgi
#Выход
[2022-11-10 18:47:16 +0000] [2633] [INFO] Starting gunicorn 20.1.0
[2022-11-10 18:47:16 +0000] [2633] [INFO] Listening at: http://127.0.0.1:8000 (2633)
[2022-11-10 18:47:16 +0000] [2633] [INFO] Using worker: sync
[2022-11-10 18:47:16 +0000] [2634] [INFO] Booting worker with pid: 2634
[2022-11-10 18:47:16 +0000] [2635] [INFO] Booting worker with pid: 2635

Откроем браузер и введём http://127.0.0.1:8000 и получим сообщение.

Выводы

С помощью этого руководство вы научились:

  • Как установить Nginx и Gunicorn;
  • Добавить правило Nginx HTTP;
  • Настраивать серверную часть для тестирования приложения;
  • Создавать символической ссылки;
  • Запуск сервера для тестирования приложения.
Оценка:
5 из 5
Аverage rating : 5
Оценок: 1
050000 г. Алматы пр. Сейфуллина, д. 502
+7 (777) 555-36-66
ООО «ИТГЛОБАЛКОМ ЛАБС»