У меня проблемы с выяснением того, как правильно настроить веб-сервер с https, который содержит несколько контейнеров Docker.
У меня запущен основной контейнер apache с использованием "httpd" docker -изображение . Для простоты назовем этот сайт « main.com ». SSL здесь отлично работает. Я настроил файл конфигурации httpd.conf для перенаправления всех вызовов с порта 80 на порт 443 и загрузил модули SSL и прокси. (Доступны оба порта 80 и 443).
У меня есть еще один контейнер Docker, который запускает API для обслуживания геоданных на « main.com ». Мы можем назвать этот контейнер « сайд-контейнер ». В Dockerfile для " side-container " я выставляю порт 8080 из этого. Затем я могу позвонить « main.com: 8080 », чтобы сделать запрос к моему « сайд-контейнеру », который запускает API.
Проблема -> По крайней мере, я мог, пока не изменил « main.com » на использование только https.
Я застрял, пытаясь получить « боковой контейнер"снова работать. При попытке подключиться к « main.com: 8080 » я получаю ошибку тайм-аута.
Мой «docker ps» выглядит так:
IMAGE COMMAND PORTS NAMES
main-container "httpd-foreground" 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:9010->9010/tcp main
side-container:latest "/docker-entrypoint.…" 0.0.0.0:8080->8080/tcp side-container
Я использую docker -compose для управления контейнерами, поэтому, возможно, мне нужно что-то там установить? Я попытался заставить его работать, используя настройку обратного прокси в apache (см. Http.conf ниже), используя порт 9010 в контейнере « main », чтобы указать на порт 8080 на « боковой контейнер ». Я могу заставить его ответить «внутренней ошибкой сервера» из-за неудачного подтверждения SSL, но не более того. . Приветствуются любые подсказки.
Из httpd.conf :
<IfModule mod_ssl.c>
Listen 443
Listen 8080
Listen 0.0.0.0:9010 https
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
SSLProtocol all -SSLv3
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
SSLHonorCipherOrder on
SSLCompression off
SSLSessionTickets off
SSLRandomSeed startup file:/dev/urandom 512
SSLRandomSeed connect file:/dev/urandom 512
SSLSessionCache shmcb:/dev/ssl_gcache_data(512000)
</IfModule>
<Virtualhost *:443>
ServerName main.com
SSLEngine on
#Primary Certificate file
SSLCertificateFile /usr/local/apache2/conf/certificate.crt
#Private Key
SSLCertificateKeyFile /usr/local/apache2/conf/private.key
#Chain bundle file
SSLCertificateChainFile /usr/local/apache2/conf/ca_bundle.crt
</VirtualHost>
<Virtualhost 0.0.0.0:9010>
ServerName main.com
SSLEngine on
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
SSLCertificateFile /usr/local/apache2/conf/certificate.crt
SSLCertificateKeyFile /usr/local/apache2/conf/private.key
SSLCertificateChainFile /usr/local/apache2/conf/ca_bundle.crt
ProxyPass /apptest http://0.0.0.0:8080/
ProxyPassReverse /apptest https://0.0.0.0:8080/
</VirtualHost>
docker -compose.yml:
version: '3'
services:
main-container:
build:
context: .
dockerfile: Dockerfile
container_name: "main"
restart: "always"
ports:
- "80:80"
- "443:443"
- "9010:9010"
links:
- side-container
networks:
- fu
side-container:
image: side-container:latest
container_name: "side-container"
ports:
- "8080:8080"
volumes:
- ${HOME}/data:/data
restart: "always"
networks:
- fu
networks:
fu:
driver: bridge