LINUX.ORG.RU
решено ФорумAdmin

Сайт в контейнере, и доступ к нему.

 , ,


0

2

Хостится сайт на локалхосте, но надо бы засунуть его в контейнер (lxc) для пущей безопасности.

Стоит вопрос доступа к контейнеру извне. Поверхностное гугление не принесло пользы. По какой схеме правильнее реализовать доступ? Редирект nginx-ом с хостовой машины в контейнер? Iptables? Bind?

Возможно в будущем на одной машине будет хостится несколько сайтов, соотв. в разных контейнерах.

★★★★★

Последнее исправление: roman77 (всего исправлений: 1)

Редирект nginx-ом с хостовой машины в контейнер?

Я у себя практикую именно этот вариант. В смысле — наружный nginx-прокси, который уже и дёргает нужные виртуальные машины (контейнеров около десятка). В духе:

server {
    server_name ls.balancer.ru;

    location / {
        add_header  X-conf  webapps.lxc;

        proxy_pass          http://webapps.lxc;
        proxy_http_version  1.1;
        proxy_set_header    Host        $host;
        proxy_set_header    X-Real-IP   $remote_addr;

        proxy_read_timeout  30s;
        proxy_send_timeout  60s;

        access_log          off;
    }
}

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

В принципе так и думал, спасибо за направление.

roman77 ★★★★★
() автор топика

Если у вас планируется использовать https, лучше использовать разные внешние ip и прокидывать их на контейнер с помощью iptables

trofk ★★★
()

на локалхосте

надо бы засунуть его в контейнер (lxc) для пущей безопасности.

в порядке получения опыта для продакшена?

emulek
()
Ответ на: комментарий от roman77

Рекомендация, потому как один tls сертификат вам не привязать к разным доменам на одном ip (если только они не все поддомены одно и того же и сертификат особого формата)

trofk ★★★
()
Ответ на: комментарий от hidden_4003

Офигеть, nginx поддерживает начиная с 0.8 версии. Спасибо, не знал!

Указание имени сервера

Более общее решение для работы нескольких HTTPS-серверов на одном IP-адресе — расширение Server Name Indication протокола TLS (SNI, RFC 6066), которое позволяет браузеру передать запрашиваемое имя сервера во время SSL handshake, а значит сервер будет знать, какой сертификат ему следует использовать для соединения. Однако, поддержка SNI браузерами ограничена. Сейчас это поддерживается браузерами начиная со следующих версий:

Opera 8.0;
MSIE 7.0 (но только на Windows Vista и выше);
Firefox 2.0 и другие браузеры, использующие Mozilla Platform rv:1.8.1;
Safari 3.2.1 (Windows-версия поддерживает SNI только на Vista и выше);
и Chrome (Windows-версия также поддерживает SNI только на Vista и выше).
В SNI можно передавать только доменные имена, однако некоторые браузеры могут ошибочно передавать IP-адрес сервера в качестве его имени, если в запросе указан IP-адрес. Полагаться на это не следует.
Чтобы использовать SNI в nginx, соответствующая поддержка должна присутствовать как в библиотеке OpenSSL, использованной при сборке бинарного файла nginx, так и в библиотеке, подгружаемой в момент работы. OpenSSL поддерживает SNI начиная с версии 0.9.8f, если она была собрана с опцией конфигурации “--enable-tlsext”. Начиная с OpenSSL 0.9.8j эта опция включена по умолчанию. Если nginx был собран с поддержкой SNI, то при запуске nginx с ключом “-V” об этом сообщается:

$ nginx -V
...
TLS SNI support enabled
...
Однако, если nginx, собранный с поддержкой SNI, в процессе работы подгружает библиотеку OpenSSL, в которой нет поддержки SNI, nginx выдаёт предупреждение:

nginx was built with SNI support, however, now it is linked
dynamically to an OpenSSL library which has no tlsext support,
therefore SNI is not available
trofk ★★★
()
Ответ на: комментарий от KRoN73

Сделал так:

server {
        listen 80;
        server_name 93.81.251.217 roman.am *.roman.am;
location /
        { 
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://192.168.1.11;
        }
}

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

roman77 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.