Мне нужен прокси-сервер для 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."
Если у кого-то есть опыт настройки прокси-сервера посланника, помощь будет признательна!
Дополнительная информация, я могу добраться до интерфейса администратора