jwilder/nginx-proxy: не может интегрировать ssl с Nginx

Мы работаем над настройкой хостинга нескольких веб-сайтов с одним портом и jwilder/nginx-proxy через SSL. Мы можем развернуть решение без ssl и оно работает нормально, но пока мы пытаемся поставить его с SSL, его сбой при вызове HTTPs. Наш файл docker-compose выглядит так:

докер-compose.yml

site1:
  build: site1
  environment:
    VIRTUAL_HOST: site1.domainlocal.com
    VIRTUAL_PROTO: https
  restart: always

site2:
  build: site2
  environment:
    VIRTUAL_HOST: site2.domainlocal.com
    VIRTUAL_PROTO: https
  restart: always

site3:
  build: site3
  environment:
    VIRTUAL_HOST: site3.domainlocal.com
    VIRTUAL_PROTO: https
  restart: always

nginx-proxy:
  image: jwilder/nginx-proxy:alpine
  ports:
    - "80:80"
    - "443:443"
  volumes:
    - /var/run/docker.sock:/tmp/docker.sock:ro
    - certs:/etc/nginx/certs:ro

  restart: always
  privileged: true

PS: папка "certs" находится в той же папке, что и файл docker-compose.

Использование самозаверяющего сертификата с использованием openssl

Структура папок выглядит так:

Main_folder-|
            |- docker-compose.yml
            |
            |- certs/.csr and .key files
            |
            |- site1/Dockerfile + Nodejs
            |- site2/Dockerfile + Nodejs
            |- site3/Dockerfile + Nodejs

Пожалуйста, предложите возможную причину проблемы и ее решение.

Вывод докера ps:

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                      NAMES
c71b52c3e6bd        compose_site3   "/bin/sh -c 'node ..."   3 days ago          Up 3 days           80/tcp                                     compose_site3_1
41ffb9ec3983        jwilder/nginx-proxy   "/app/docker-entry..."   3 days ago          Up 3 days           0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   compose_nginx-proxy_1
a154257c62ec        compose_site1   "/bin/sh -c 'node ..."   3 days ago          Up 3 days           80/tcp                                     compose_site1_1
3ed556e9287e        compose_site2   "/bin/sh -c 'node ..."   3 days ago          Up 3 days           80/tcp                                     compose_site2_1

2 ответа

Поэтому, потратив на это столько времени, я наконец смог решить проблему. Таким образом, для интеграции ssl с jwilder/nginx-proxy не требуется указывать сертификат и ключ в имени домена, вместо этого он может иметь любое имя, просто вам нужно указать имя сертификата в файле docker-compose (я нашел такой подход просто ударом и пробой). Итак, ваш составной файл докера должен выглядеть так:

site1:
  build: site1
  environment:
    VIRTUAL_HOST: site1.domainlocal.com
    CERT_NAME: mycertificate
  volumes:
    - /etc/ssl/certs:/etc/ssl/certs:ro
  restart: always

site2:
  build: site2
  environment:
    VIRTUAL_HOST: site2.domainlocal.com
    CERT_NAME: mycertificate
  volumes:
    - /etc/ssl/certs:/etc/ssl/certs:ro
  restart: always

site3:
  build: site3
  environment:
    VIRTUAL_HOST: site3.domainlocal.com
    CERT_NAME: mycertificate
  volumes:
    - /etc/ssl/certs:/etc/ssl/certs:ro
  restart: always

nginx-proxy:
  image: jwilder/nginx-proxy:alpine
  ports:
    - "80:80"
    - "443:443"
  environment:
    DEFAULT_HOST: domainlocal.com #default host
    CERT_NAME: mycertificate # Wildcard Certificate name without extension  
  volumes:
    - /var/run/docker.sock:/tmp/docker.sock:ro
    - /etc/ssl/certs:/etc/nginx/certs  #certificate path in docker container

  restart: always
  privileged: true

и просто соберите и запустите compose, используя "docker-compose up --build", и поздравляем вас теперь с защищенным слоем.

Ваш сертификат должен заканчиваться расширением.crt, а не.csr. Также убедитесь, что он назван соответствующим образом для домена, соответствующего переменной VIRTUAL_HOST. Согласно документации:

Сертификат и ключи должны быть названы в честь виртуального хоста с расширением.crt и.key. Например, контейнер с VIRTUAL_HOST=foo.bar.com должен иметь файл foo.bar.com.crt и foo.bar.com.key в каталоге certs.

Другие вопросы по тегам