Я запускаю приложение под названием Амбар на файловом сервере (Samba). Я хочу, чтобы пользователи в моей сети могли свободно и безопасно искать документы. Поскольку Ambar работает по протоколу HTTP, а на сервере уже был установлен Apache, я решил настроить обратный прокси-сервер для Ambar через порт 443. Можно подумать, это должно быть довольно просто, но нет, очевидно, Ambar (работает на Redis) говорит следующее:
Possible SECURITY ATTACK detected. It looks like somebody is sending POST or Host: commands to Redis. This is likely due to an attacker attempting to use Cross Protocol Scripting to compromise your Redis instance. Connection aborted.
(взято из журналов docker-compose).
Я могу получить доступ к графическому интерфейсу приложения, но ничего не могу там сделать. В любом случае это хорошо, поскольку, по крайней мере, я знаю, что это не проблема с сертификатом.
Это мой Apache-config:
LoadModule ssl_module modules/mod_ssl.so
<VirtualHost *:443>
ServerName ambar.internal
ProxyPreserveHost On
ProxyPass / http://ambar.internal:1000/
ProxyPassReverse / http://ambar.internal:1000/
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ambar.crt
SSLCertificateKeyFile /etc/ssl/private/ambar.pem
</VirtualHost>
Изменить: обратное проксирование с SSL / TLS, активированным с другого компьютера, тоже не работает.
Внесение изменений в пакеты Ambar вручную - не лучшая идея, поскольку все приложение поставляется с готовыми контейнерами Docker. Итак, моя следующая попытка - настроить SSL в docker-compose.yml
файл, но разве не должно быть способа сделать это с помощью старого доброго обратного проксирования?
Вот мой docker-compose.yml:
version: "2.1"
networks:
internal_network:
services:
db:
restart: always
networks:
- internal_network
image: ambar/ambar-mongodb:latest
environment:
- cacheSizeGB=2
volumes:
- /opt/ambar/db:/data/db
expose:
- "27017"
es:
restart: always
networks:
- internal_network
image: ambar/ambar-es:latest
expose:
- "9200"
environment:
- cluster.name=ambar-es
- ES_JAVA_OPTS=-Xms2g -Xmx2g
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
cap_add:
- IPC_LOCK
volumes:
- /opt/ambar/es:/usr/share/elasticsearch/data
rabbit:
restart: always
networks:
- internal_network
image: ambar/ambar-rabbit:latest
hostname: rabbit
expose:
- "15672"
- "5672"
volumes:
- /opt/ambar/rabbit:/var/lib/rabbitmq
redis:
restart: always
sysctls:
- net.core.somaxconn=1024
networks:
- internal_network
image: ambar/ambar-redis:latest
expose:
- "6379"
serviceapi:
depends_on:
redis:
condition: service_healthy
rabbit:
condition: service_healthy
es:
condition: service_healthy
db:
condition: service_healthy
restart: always
networks:
- internal_network
image: ambar/ambar-serviceapi:latest
expose:
- "8081"
environment:
- mongoDbUrl=mongodb://db:27017/ambar_data
- elasticSearchUrl=http://es:9200
- redisHost=redis
- redisPort=6379
- rabbitHost=amqp://rabbit
- langAnalyzer=ambar_en
webapi:
depends_on:
serviceapi:
condition: service_healthy
restart: always
networks:
- internal_network
image: ambar/ambar-webapi:latest
expose:
- "8080"
ports:
- "8080:8080"
environment:
- uiLang=en
- mongoDbUrl=mongodb://db:27017/ambar_data
- elasticSearchUrl=http://es:9200
- redisHost=redis
- redisPort=6379
- serviceApiUrl=http://serviceapi:8081
- rabbitHost=amqp://rabbit
frontend:
depends_on:
webapi:
condition: service_healthy
image: ambar/ambar-frontend:latest
restart: always
networks:
- internal_network
ports:
- "1000:80"
expose:
- "1000"
environment:
- api=http://192.168.123.123:8080
pipeline0:
depends_on:
serviceapi:
condition: service_healthy
image: ambar/ambar-pipeline:latest
restart: always
networks:
- internal_network
environment:
- id=0
- apiUrl=http://serviceapi:8081
- rabbit_host=amqp://rabbit
documentation:
depends_on:
serviceapi:
condition: service_healthy
image: ambar/ambar-local-crawler
restart: always
networks:
- internal_network
expose:
- "8082"
environment:
- name=documentation
- ignoreExtensions=.{exe,dll,rar,s,so}
- apiUrl=http://serviceapi:8081
volumes:
- /media/Documentation:/usr/data