Dockerized обратный прокси - PullRequest
       8

Dockerized обратный прокси

0 голосов
/ 21 февраля 2019

Я планирую разместить три веб-сайта на одном хосте, назовем его raspi-dev:

home.redacted.ca, brew.redacted.ca, www.redacted.ca (или отредактировано).ca)

Чтобы включить это, я работаю с контейнером, который принимает входящие соединения через порт 80. Вот фрагмент конфигурации обратного прокси:

server {
    server_name brew.redacted.ca;
    listen 80;
    location / {
        proxy_pass http://brewweb;
    }
}

brewweb - это контейнерпо имени варево.Связь работает до сих пор.При переходе на http://brew.redacted.ca, я получаю именно то, что ожидаю:

"GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0) Gecko/20100101 Firefox/60.0" "-"

Смысл в том, чтобы перенаправить трафик на https.Вот код с другого веб-сервера:

server {
    listen 80;
    server_name brew.redacted.ca;
    return 301 https://brew.redacted.ca$request_uri;
}


server {
    server_name brew.redacted.ca;
    root /var/www/brew;
    listen 443 ssl;
    location / {
        try_files $uri $uri/ /index.html =404;
    }

    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5;
}

Так что он работает как задумано.Вы переходите на http://brew.redacted.ca, и он говорит вам вернуться на порт 443. Однако в браузере я получаю недействительную ссылку: «Невозможно подключиться».Сейчас я предполагаю, что это потому, что мой обратный прокси-сервер, который является единственным контейнером, прослушивающим сеть хоста, не может получать и затем пересылать будущие 443 запроса.Я в некоторой растерянности, как справиться с этим, хотя .. я получу сертификат для обратного прокси ???Как бы я это сделал, поскольку он даже сам не подает никакого контента ...

Я открыт для всех предложений.

1 Ответ

0 голосов
/ 21 февраля 2019

Это ваш прокси-сервер, который должен безопасно общаться с клиентами, а не с размещенными приложениями.Я делаю это во внутренней сети.У меня есть докер-хост, на котором работает несколько разных инструментов разработчика за одним обратным прокси-сервером Nginx.

Все SSL / TLS обрабатываются прокси-сервером.Веб-серверы, которые обслуживают приложения, находятся в док-контейнерах, видимых только прокси-контейнеру Nginx.Они взаимодействуют с прокси-сервером через http, а не через https.

Я использую сертификат подстановочного знака, выданный для моего основного сервера * .app.co, в котором есть записи SA для www.app.co, utility.app.co иanother.app.co

Конфигурация прокси-сервера Nginx на самом деле выглядит примерно так:

ssl_certificate     redacted.pem
ssl_certificate_key redacted.key
ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers         HIGH:!aNULL:!MD5;
ssl_session_cache   shared:SSL:10m;
ssl_session_timeout 10m;

server {
  listen 80 default_server;
  server_name _;
  return 301 https://$host$request_uri;
}

server {
  listen 443;
  server_name www.app.co;
  proxy_pass http://www-container
  ...
}

server {
  listen 443 default_server;
  server_name www.app.co;
  proxy_pass http://www-container
  ...
}

server {
  listen 443;
  server_name another.app.co;
  proxy_pass http://another-container
  ...
}
...