Включить доступ к порту Docker только с помощью обратного прокси-сервера Nginx

#docker #nginx #reverse-proxy #centos7 #iptables

#docker #nginx #обратный прокси #centos7 #iptables

Вопрос:

У меня есть контейнер Docker на порту 8081, работающий на Centos7, и обратный прокси-сервер с Nginx. В моем домене установлен SSl LetsEncrypt, и он хорошо работает при доступе «https://my.example.com «, он перенаправляет меня на мой докер 8081.

Но я, когда получаю доступ «http://my.example.com:8081 «, я все еще могу получить доступ к своему приложению Docker … я не хочу включать это … не хочу включать какой-либо http-доступ.

Я хочу получить доступ к 8081 только через обратный прокси-сервер Nginx (который заставляет меня использовать https) … я думаю, что это может быть какая-то конфигурация в моих iptables, но у меня нет опыта работы с этим. Кто-нибудь может мне помочь?

Спасибо!

Это мой файл conf.d в Nginx

     server{
    server_name my.example.com;
    location / {
    proxy_pass http://localhost:8081;}

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/my.example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/my.example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server{
    if ($host = my.example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

   listen 80;
   server_name my.example.com;
   return 404; # managed by Certbot
 
 
}
 

Ответ №1:

iptables не понимает разницы между HTTP или HTTPS, он понимает только ip; порты и уровни mac, если вы попытаетесь заблокировать порт 8081 с помощью iptables, даже ваше https-соединение будет удалено или отклонено в зависимости от вашего выбора.

Если ваш контейнер docker доступен извне без прохождения через обратный прокси-сервер, это проблема конфигурации контейнера, или если ваш обратный прокси-сервер nginx пропускает http-пакеты, тогда это проблема конфигурации nginx, я думаю, нам нужно больше деталей с вашей стороны.

Комментарии:

1. Я вижу! Какую информацию, по вашему мнению, я должен опубликовать здесь, чтобы помочь? Я только что добавил выше свой файл Nginx conf.d

Ответ №2:

Я решил эту проблему с помощью приложения брандмауэра от моего хостинг-провайдера (Vultr). Там я оставил 8081 только для локального доступа, так что теперь доступ к нему невозможен без прохождения через обратный прокси-сервер Nginx!