Найти тему
ИТ разнообразно

Как создавать многодоменные веб-приложения с помощью Podman и Nginx. Часть 4.

Оглавление
Unsplash
Unsplash

Обратное проксирование ваших приложений на тот же порт с Nginx (продолжение)

Это стандартная и ожидаемая мера безопасности. Чтобы обойти это и позволить контейнеру Nginx работать с использованием порта 80 во время выполнения, запустите:

$ sudo sysctl net.ipv4.ip_unprivileged_port_start=80 net.ipv4.ip_unprivileged_port_start = 80

Сирена предупреждения. Будьте осторожны с этой настройкой, так как она может создать уязвимость. После запуска контейнера вы можете вернуть этому параметру значение по умолчанию 1024.

Теперь снова запустите контейнер и посмотрите, что произойдёт:

$ podman run --name=nginx -p 80:80 -v $HOME/nginx:/etc/nginx/conf.d:Z -d docker.io/library/nginx
a6575989327eb14b9d980505832e8b5600e17248667feba487c38c1792274b99
$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4b4c00f0faa5 docker.io/library/httpd:latest httpd-foreground 30 minutes ago Up 30 minutes 0.0.0.0:8080->80/tcp syscom
ff1d8bae380a docker.io/library/httpd:latest httpd-foreground 30 minutes ago Up 30 minutes 0.0.0.0:8081->80/tcp sysorg
a6575989327e docker.io/library/nginx:latest nginx -g daemon o... 29 seconds ago Up 28 seconds 0.0.0.0:80->80/tcp nginx

Отлично, он работает! Выполните простой тест, попробовав выполнить команду curl для обоих доменов приложений без указания портов > 1024, и проверьте, отвечают ли они оба на порту 80, вот так:

$ curl http://sysadmin.com
<html>
<header>
<title>SysAdmin.com</title>
</header>
<body>
<p>This is the SysAdmin website hosted on the .com domain</p>
</body>
</html>
$ curl http://sysadmin.org
<html>
<header>
<title>SysAdmin.org</title>
</header>
<body>
<p>This is the SysAdmin website hosted on the .org domain</p>
</body>
</html>

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

$ sudo firewall-cmd --add-service=http --permanent
success
$ sudo firewall-cmd --reload
success

Вот как это выглядит, когда я просматриваю приложение sysadmin.com в браузере:

Добавьте описание
Добавьте описание

А вот как выглядит приложение sysadmin.org:

Добавьте описание
Добавьте описание

Замечательно! В этой конечной архитектуре приложения правильно отвечают на порт 80 одного и того же хоста с использованием Nginx в качестве обратного прокси для обоих.

Подведение итогов

Когда вам нужно разместить разные приложения из разных доменов на одном хосте, управление ими с использованием разных портов может оказаться сложной задачей. Используя обратный прокси-сервер, такой как Nginx, в сочетании с преимуществами запуска контейнеров с Podman, вы можете простым способом создать многодоменную архитектуру.

Для более сложного масштабирования, оркестрации, маршрутизации и балансировки многих приложений и сервисов на основе контейнеров вы можете использовать корпоративную платформу оркестрации на основе Kubernetes, такую как Red Hat OpenShift Container Platform.

Следите за новостями по связанным темам! В моей следующей статье я покажу, как использовать Ansible для автоматизации Podman для развертывания контейнеров и модулей, используя в качестве примера среду из этой статьи.

Перевод. Автор оригинала: Alexon Oliveira.