
Ich muss Kafka auf Docker mit Web-Benutzeroberfläche in einer bestimmten Domäne UND einem bestimmten LINK ausführen, zum Beispiel:
http://somesite.com/kafka
Ich verwende dieses 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'
Wenn ich es apache2
nach direkter Domäne einstelle kafka.somesite.com
, funktioniert es.
<VirtualHost *:80>
ServerName kafka.somesite.com
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:9099/
ProxyPassReverse / http://127.0.0.1:9099/
</VirtualHost>
Aber wenn ich versuche, die Domäne mit dem Link festzulegen somesite.com/kafka
, wird nur ein leerer Bildschirm angezeigt.
<VirtualHost *:80>
ServerName somesite.com
ProxyPreserveHost On
ProxyPass /kafka http://127.0.0.1:9099/
ProxyPassReverse /kafka http://127.0.0.1:9099/
</VirtualHost>
Wie kann ich Kafka mit Link funktionsfähig machen?
Danke schön.
Antwort1
Sie müssen zwei Dinge ändern. Zunächst müssen Sie die Basis-URL des Kafka-UI-Containers konfigurieren. Dies können Sie mithilfe desSERVER_SERVLET_CONTEXT_PATH
Umgebungsvariable.
# ...
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
# ...
Wenn Sie dies nicht tun, beginnen alle von der Kafka-Benutzeroberfläche generierten URLs bei /
, was dazu führt, dass CSS, JavaScript usw. von /
statt von abgerufen werden /kafka/
.
Dann müssen Sie die ProxyPass
Direktive an diesen Pfad anpassen:
ProxyPass /kafka/ http://127.0.0.1:9099/kafka/
ProxyPassReverse /kafka/ http://127.0.0.1:9099/kafka/
Stellen Sie ProxyPass
immer sicher, dass die abschließenden Schrägstriche übereinstimmen.wie in der Dokumentation angegeben:
Wenn das erste Argument mit einem abschließenden / endet, sollte das zweite Argument ebenfalls mit einem abschließenden / enden und umgekehrt. Andernfalls fehlen den resultierenden Anfragen an das Backend möglicherweise einige erforderliche Schrägstriche und liefern nicht die erwarteten Ergebnisse.
Antwort2
ServerName sollte immer noch sein somesite.com
, da Apache dies immer noch als Basis-URL erwartet. Wenn die URL ist, somesite.com/kafka
sollte sie umgeleitet werden zuhttp://127.0.0.1:9099/
Unterm Strich sollte die zweite Konfiguration funktionieren, solange SieServerName somesite.com