Рейтинг:1

Локальный обратный прокси nginx с firewalld

флаг sa

Я запускаю службу в док-контейнере. Служба предоставляется на заданном порту (например, 12345).

Кроме того, я добавил обратный прокси-сервер nginx, чтобы получить дополнительные функции, такие как HTTPS и HTTP/2.

Конфигурация nginx следующая:

рабочие_процессы авто;

http {
    отправить файл включен;

    gzip включен;

    сервер {
        слушать 443 ssl http2;
        слушать [::]:443 ssl ipv6only=on http2;
        
        server_name example.com

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # под управлением Certbot
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # под управлением Certbot
        включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot        

        место расположения / {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Хост $host;

            прокси_пароль http://localhost:12345/;

            прокси_буферизация выключена;
            прокси_http_версия 1.1;
            proxy_set_header Обновить $http_upgrade;
            proxy_set_header Соединение "обновление";
        }
    }
}

Без брандмауэра работает нормально (могу получить доступ к сервису по локальной сети как по порту 443, так и по порту 12345).

У меня есть firewalld с серверной частью nftables, настроенной следующим образом:

докер (активный)
  цель: ПРИНЯТЬ
  icmp-инверсия блока: нет
  интерфейсы: br-06ceff0ffa49 докер0
  источники: 
  Сервисы: 
  порты: 12345/tcp 12345/udp
  протоколы: 
  вперед: да
  маскарад: нет
  форвард-порты: 
  исходные порты: 
  icmp-блоки: 
  богатые правила: 

публичный (активный)
  цель: по умолчанию
  icmp-инверсия блока: нет
  интерфейсы: eth0 wlan0
  источники: 
  сервисы: http https ssh
  порты: 12345/TCP
  протоколы: 
  вперед: да
  маскарад: нет
  форвард-порты: 
  исходные порты: 
  icmp-блоки: 
  богатые правила: 

доверенный (активный)
  цель: ПРИНЯТЬ
  icmp-инверсия блока: нет
  интерфейсы: вот
  источники: 
  Сервисы: 
  порты: 12345/TCP
  протоколы: 
  вперед: да
  маскарад: нет
  форвард-порты: 
  исходные порты: 
  icmp-блоки: 
  богатые правила: 

Когда я пытаюсь получить доступ к сервису с ПК в локальной сети с этой конфигурацией, я могу получить к нему доступ напрямую через порт 12345, но если я попытаюсь получить доступ к нему через nginx, я получу тайм-аут.

Мне кажется, что firewalld не позволяет nginx обмениваться данными с контейнером, но я понятия не имею, чего мне не хватает, чтобы заставить его работать.

Что я могу упустить?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.