Назад | Перейти на главную страницу

Настроить простой прокси посланника

Мне нужен прокси-сервер для grpc-маршрутизации внешнего приложения, которое я пишу, но я уже терплю неудачу, как я думаю, с простой конфигурацией. Поскольку это не работало, я постепенно уменьшал свой файл конфигурации. Сначала просто перенаправьте входящий порт (8080) на порт, на котором работает мой веб-сервер (8001). Это не сработало, поэтому я попытался просто добавить direct response ожидая, что хотя бы это должно сработать - этого не произошло. Вот мой конфиг

admin:
  access_log_path: /tmp/admin_access.log
  address:
    socket_address: { address: 0.0.0.0, port_value: 9901 }


static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address: { address: 0.0.0.0, port_value: 8080 }
    filter_chains:
    - filters:
      - name: envoy.http_connection_manager
        config:
          codec_type: auto
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: grpc_service_host
              domains: ["*"]
              routes:
              - match: { prefix: "/test" }
                direct_response: { status: 200, body: { inline_string: "Bringing redemption to my dark night. Beautiful surrender is where I wanna be." } }
              - match: { prefix: "/" }
                route:
                  cluster: vue_service

  clusters:

  - name: vue_service
    connect_timeout: 5s
    type: logical_dns
    http2_protocol_options: {}
    lb_policy: round_robin
    hosts: [{ socket_address: { address: 192.168.1.125, port_value: 80 }}]

И если это важно, это мой docker-compose.yaml

version: '3.7'

services:
  envoy:
    build:
      context: ./envoy
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
      - "8081:8081"
      - "9901:9901"
    volumes:
      - ./envoy/cfg/envoy.yaml:/etc/envoy/envoy.yaml
    logging:
      options:
        max-size: 50m
    networks:
      - production_apps


networks:
  production_apps:
    name: production_apps

Так что я ожидал, если открою 192.168.1.125:8080/test Я должен получить любой ответ от доверенного лица посланника. Но вместо этого я получаю stream timeout.

Что я делаю не так? Это неправильная общая конфигурация хоста? Может быть, краткое объяснение того, как построена система:
Хост Windows (192.168.1.27) -> VM Ubuntu (192.168.1.125) -> Docker Envoy

Обновить

Я снова упростил свою конфигурацию, но результат все тот же. Есть ли способ получить какие-либо логи от моего посланника, чтобы узнать, получен ли хотя бы запрос? Я получу stream timeout через некоторое время

static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address: { address: 0.0.0.0, port_value: 8080 }
    filter_chains:
    - filters:
      - name: envoy.http_connection_manager
        config:
          codec_type: auto
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: grpc_service_host
              domains: ["*"]
              routes:
              - match: { prefix: "/" }
                direct_response: 
                  status: 200
                  body: 
                    inline_string: "Hello directly from envoy."

Если у кого-то есть опыт настройки прокси-сервера посланника, помощь будет признательна!

Дополнительная информация, я могу добраться до интерфейса администратора