Обратное проксирование ваших приложений на тот же порт с Nginx
Сначала создайте каталог, в котором будут храниться все ваши файлы конфигурации для Nginx, и войдите в него:
$ mkdir nginx
$ cd nginx/
Внутри этого каталога создайте три разных файла:
Файл default.conf, содержащий конфигурацию Nginx по умолчанию
Файл syscom.conf, содержащий конфигурацию приложения sysadmin.com
Файл sysorg.conf, содержащий конфигурацию приложения sysadmin.org
Для каждого домена используйте server_name для определения домена и proxy_pass для сопоставления контейнера, а также указывая IP-адрес хост-компьютера и сопоставленный порт для каждого контейнера. Теперь все они будут слушать 80-й порт, используя ваш обратный прокси-сервер в качестве шлюза:
$ cat << EOF > default.conf
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
EOF
$ cat << EOF > syscom.conf
server {
listen 80;
server_name sysadmin.com;
location / {
proxy_pass http://192.168.1.30:8080;
}
}
EOF
$ cat << EOF > sysorg.conf
server {
listen 80;
server_name sysadmin.org;
location / {
proxy_pass http://192.168.1.30:8081;
}
}
EOF
Для реализации этого необходимо использовать параметр include /etc/nginx/conf.d/*.conf файла /etc/nginx/nginx.conf внутри контейнера Nginx. Он позволяет загружать модульные файлы конфигурации из директории /etc/nginx/conf.d/. При запуске эти файлы будут смонтированы в этом каталоге внутри контейнера.
Теперь пришло время запустить контейнер Nginx с соответствующими параметрами. Однако при первом запуске, особенно при работе с контейнерами без root, вы можете получить следующее сообщение об ошибке:
$ podman run --name=nginx -p 80:80 -v $HOME/nginx:/etc/nginx/conf.d:Z -d docker.io/library/nginx
Error: rootlessport cannot expose privileged port 80, you can add 'net.ipv4.ip_unprivileged_port_start=80' to /etc/sysctl.conf (currently 1024), or choose a larger port number (>= 1024): listen tcp 0.0.0.0:80: bind: permission denied
Продолжение следует...
Перевод. Автор оригинала: Alexon Oliveira.