Настройте SSL в двух разных контейнерах. Один на 443. Один на не-443. Оба Nginx

#docker #ssl #nginx #strapi

#docker #ssl #nginx #strapi

Вопрос:

Я пытаюсь настроить SSL для двух контейнерных приложений на одном хосте.

Приложение 1: Стандартная конфигурация SSL на порту 443. Nginx. —опубликовать 443:443. Отлично работает.

Приложение 2. Настройка SSL на порту 8000. Nginx. —опубликовать 8000:1337 (Strapi CMS).

docker run для app1:

 docker run -d --name app1 
    --publish 80:80 
    --publish 443:443 
    --volume /home/app1/packages/app1/nginx/config:/etc/nginx/conf.d 
    --volume /home/app1/packages/app1/nginx/certs/dev:/etc/nginx/certs 
    azureacr.azurecr.io/website:latest-dev
  

docker run для app2:

 docker run -d --name app2 
    --publish 8000:1337 
    --volume vol1:/app2/data 
    --volume vol2:/app2/public/uploads 
    azureacr.azurecr.io/websitecms:latest-dev
  

nginx.conf

 server {
    listen 443 ssl;
    server_name website.com;
    ssl_certificate /etc/nginx/certs/cert.crt;
    ssl_certificate_key /etc/nginx/certs/private.key;

    location / {
        proxy_pass http://127.0.0.1:8000;
    }

}

server {
    listen 8000 ssl;
    server_name website.com;
    ssl_certificate /etc/nginx/certs/cert.crt;
    ssl_certificate_key /etc/nginx/certs/private.key;

    location / {
        proxy_pass http://127.0.0.1:8000;
    }

}
  

curl -v вывод

 * Uses proxy env variable https_proxy == 'http://proxy.com:8080'
*   Trying X.X.X.X...
* TCP_NODELAY set
* Connected to proxy.com (X.X.X.X) port 8080 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to website.com:8000
> CONNECT website.com:8000 HTTP/1.1
> Host: website.com:8000
> User-Agent: curl/7.64.1
> Proxy-Connection: Keep-Alive
> 
< HTTP/1.1 200 Connection established
< 
* Proxy replied 200 to CONNECT request
* CONNECT phase completed!
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/cert.pem
  CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* CONNECT phase completed!
* CONNECT phase completed!
* LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to website.com:8000 
* Closing connection 0
curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to website.com:8000 
  

Есть мысли о том, как заставить оба приложения 1 и 2 работать на одном хосте?

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

1. Можете ли вы указать полную команду docker, которую вы используете для запуска этих двух контейнеров?

2. добавлен @rootkonda

3. Очень интересный вопрос об использовании веб-сервера 2 containers с SSL…