Короче говоря, я пытаюсь настроить контейнер nginx для proxy_pass для других контейнеров через порт 80.
Я следовал этому уроку: https://dev.to/domysee/setting-up-a-reverse-proxy-with-nginx-and-docker-compose-29jg
Они описывают наличие файла для создания докера, который выглядит примерно так:
version: '3'
services:
nginx:
image: nginx:latest
container_name: production_nginx
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./nginx/error.log:/etc/nginx/error_log.log
- ./nginx/cache/:/etc/nginx/cache
- /etc/letsencrypt/:/etc/letsencrypt/
ports:
- 80:80
- 443:443
your_app_1:
image: your_app_1_image:latest
container_name: your_app_1
expose:
- "80"
your_app_2:
image: your_app_2_image:latest
container_name: your_app_2
expose:
- "80"
your_app_3:
image: your_app_3_image:latest
container_name: your_app_3
expose:
- "80"
Затем в конфигурации nginx они делают proxy_pass на основе пути, подобного этому:
proxy_pass http://your_app_1:80;
Это все делаетсмысл для меня, однако, когда я делал сервер тестового узла для прослушивания порта 80, я получаю сообщение об ошибке: Ошибка: прослушивание EACCES: разрешение отклонено 0.0.0.0:80.В моем Dockerfile для сервера узлов я использую другого пользователя:
USER node
Я знаю, что получаю эту ошибку, потому что пользователи без прав root не должны иметь возможность связываться ниже порта 1024 или чего-то еще,И я знаю, что это плохая практика - запускать от имени root в контейнере ... так как в мире это возможно?Я чувствую, что я что-то здесь упускаю.Было бы неплохо не вспоминать какой-то специальный высокопортовый порт, на котором работает ваш сервер, каждый раз, когда вы выполняете proxy_pass в nginx ... или это просто факт жизни?