
특정 도메인 및 링크에서 웹 UI를 사용하여 Docker에서 Kafka를 실행해야 합니다. 예를 들면 다음과 같습니다.
http://somesite.com/kafka
나는 이 docker-compose.yml을 사용하고 있습니다.
version: '3.3'
services:
zookeeper:
image: 'bitnami/zookeeper:latest'
ports:
- '2181:2181'
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
kafka:
image: 'bitnami/kafka:latest'
ports:
- '9092:9092'
environment:
- KAFKA_BROKER_ID=1
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
depends_on:
- zookeeper
kafka-ui:
image: 'provectuslabs/kafka-ui:latest'
environment:
- KAFKA_CLUSTERS_0_NAME=local
- KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092
- KAFKA_CLUSTERS_0_ZOOKEEPER=zookeeper:2181
depends_on:
- kafka
networks:
- default
ports:
- '9099:8080'
apache2
직접 도메인으로 설정하면 kafka.somesite.com
작동합니다.
<VirtualHost *:80>
ServerName kafka.somesite.com
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:9099/
ProxyPassReverse / http://127.0.0.1:9099/
</VirtualHost>
그런데 링크로 도메인을 설정하려고 하면 somesite.com/kafka
빈 화면만 나오네요.
<VirtualHost *:80>
ServerName somesite.com
ProxyPreserveHost On
ProxyPass /kafka http://127.0.0.1:9099/
ProxyPassReverse /kafka http://127.0.0.1:9099/
</VirtualHost>
링크를 사용하여 Kafka를 작동하게 하려면 어떻게 해야 합니까?
감사합니다.
답변1
두 가지를 바꿔야 합니다. 먼저 kafka-ui 컨테이너의 기본 URL을 구성해야 합니다.SERVER_SERVLET_CONTEXT_PATH
환경 변수.
# ...
kafka-ui:
image: 'provectuslabs/kafka-ui:latest'
environment:
- KAFKA_CLUSTERS_0_NAME=local
- KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092
- KAFKA_CLUSTERS_0_ZOOKEEPER=zookeeper:2181
- SERVER_SERVLET_CONTEXT_PATH=/kafka
# ...
그렇지 않으면 kafka-ui에서 생성된 모든 URL이 에서 시작되어 /
CSS, JavaScript 등이 에서 /
대신 가져오게 됩니다 /kafka/
.
ProxyPass
그런 다음 해당 경로에 지시문을 적용해야 합니다 .
ProxyPass /kafka/ http://127.0.0.1:9099/kafka/
ProxyPassReverse /kafka/ http://127.0.0.1:9099/kafka/
항상 ProxyPass
후행 슬래시가 일치하는지 확인하십시오.문서에 명시된대로:
첫 번째 인수가 후행 /로 끝나는 경우 두 번째 인수도 후행 /로 끝나야 하며 그 반대의 경우도 마찬가지입니다. 그렇지 않으면 백엔드에 대한 결과 요청에서 필요한 일부 슬래시가 누락되어 예상 결과를 제공하지 못할 수 있습니다.
답변2
ServerName은 여전히 이어야 합니다 somesite.com
. 왜냐하면 Apache는 여전히 이를 기본 URL로 기대하기 때문입니다. URL이 다음 somesite.com/kafka
으로 리디렉션되어야 합니다.http://127.0.0.1:9099/
결론적으로 두 번째 구성은 설정한 한 작동해야 합니다.ServerName somesite.com