로컬 컨테이너에 대한 역방향 프록시

로컬 컨테이너에 대한 역방향 프록시

특정 도메인 및 링크에서 웹 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

관련 정보