
Necesito ejecutar Kafka en la ventana acoplable con la interfaz de usuario web en algún dominio Y ENLACE específico, por ejemplo:
http://somesite.com/kafka
Estoy usando este 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'
Cuando lo configuro apache2
por dominio directo kafka.somesite.com
, está funcionando.
<VirtualHost *:80>
ServerName kafka.somesite.com
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:9099/
ProxyPassReverse / http://127.0.0.1:9099/
</VirtualHost>
Pero cuando intento configurar el dominio con el enlace somesite.com/kafka
, solo aparece la pantalla en blanco.
<VirtualHost *:80>
ServerName somesite.com
ProxyPreserveHost On
ProxyPass /kafka http://127.0.0.1:9099/
ProxyPassReverse /kafka http://127.0.0.1:9099/
</VirtualHost>
¿Cómo puedo hacer que Kafka funcione con un enlace?
Gracias.
Respuesta1
Tienes que cambiar dos cosas. Primero, necesita configurar la URL base del contenedor kafka-ui, puede hacerlo usando elSERVER_SERVLET_CONTEXT_PATH
Variable ambiental.
# ...
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
# ...
Si no lo hace, todas las URL generadas por kafka-ui comenzarán en /
, lo que dará como resultado que CSS, JavaScript y similares se obtengan /
en lugar de /kafka/
.
Entonces necesitas adaptar la ProxyPass
directiva a ese camino:
ProxyPass /kafka/ http://127.0.0.1:9099/kafka/
ProxyPassReverse /kafka/ http://127.0.0.1:9099/kafka/
Asegúrese ProxyPass
siempre de que las barras finales coincidan,como se indica en la documentación:
Si el primer argumento termina con una / final, el segundo argumento también debe terminar con una / final, y viceversa. De lo contrario, las solicitudes resultantes al backend pueden omitir algunas barras diagonales necesarias y no ofrecer los resultados esperados.
Respuesta2
ServerName aún debería ser somesite.com
, porque Apache todavía lo espera como URL base. Cuando la URL sea somesite.com/kafka
debería redirigirla ahttp://127.0.0.1:9099/
En pocas palabras, la segunda configuración debería funcionar siempre que establezcaServerName somesite.com