【发布时间】:2020-04-14 13:15:31
【问题描述】:
我有一个用 Java 编写的 gRPC 服务器,我目前正在尝试使用 React 创建一个 Web 客户端。但是,我似乎无法管理客户端连接的特使代理与实际服务器之间的连接。
我希望收到与 Java 客户端相同的消息,但我收到错误 "Http response at 400 or 500 level",在 Web 客户端收到空响应,而 Java 服务器甚至没有收到请求。
服务器运行在 8080 端口,envoy 代理配置在 9090 端口,这是 web 客户端使用的端口。
Dockerfile:
FROM envoyproxy/envoy-dev:latest
COPY ./envoy.yaml /etc/envoy/envoy.yaml
CMD /usr/local/bin/envoy -c /etc/envoy/envoy.yaml -l trace --log-path /tmp/envoy_info.log
envoy.yaml:
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: 9090 }
filter_chains:
- filters:
- name: envoy.http_connection_manager
config:
codec_type: auto
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains: ["*"]
routes:
- match: { prefix: "/" }
route:
cluster: m_service
cors:
allow_origin:
- "*"
allow_headers: keep-alive,user-agent,cache-control,content-type,content-transfer-encoding,x-accept-content-transfer-encoding,x-accept-response-streaming,x-user-agent,x-grpc-web,grpc-timeout
expose_headers: grpc-status,grpc-message
enabled: true
http_filters:
- name: envoy.grpc_web
- name: envoy.cors
- name: envoy.router
clusters:
- name: m_service
connect_timeout: 0.25s
type: logical_dns
http2_protocol_options: {}
lb_policy: round_robin
hosts:
socket_address:
address: localhost
port_value: 8080
我用于构建和运行 docker 容器的命令是 docker build -t m-server . 和 docker run -p 9090:9090 -td m-server /bin/bash,前端的 proto 类是静态加载的。
如果还有其他有用的代码可以发布,请告诉我。感谢您的任何建议,谢谢!
【问题讨论】:
标签: java node.js docker grpc envoyproxy