envoy代理使用教程
http代理
envoy.yaml
admin:
access_log_path: /tmp/admin_access.log
address:
socket_address: { address: 127.0.0.1, port_value: 9901 }
static_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 10000 }
filter_chains:
- filters:
- name: envoy.http_connection_manager
config:
stat_prefix: ingress_http
codec_type: AUTO
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains: ["*"]
routes:
- match: { prefix: "/" }
route: { cluster: some_service }
http_filters:
- name: envoy.router
clusters:
- name: some_service
connect_timeout: 10s
type: STATIC
lb_policy: ROUND_ROBIN
hosts: [{ socket_address: { address: 62.234.197.82, port_value: 80 }}]
本地配置hosts
127.0.0.1 xxxx.xxx.com
启动docker
$ docker run -d -p 10000:10000 -v `pwd`/envoy.yaml:/etc/envoy/envoy.yaml --name envoyproxy envoyproxy/envoy-alpine:v1.14.1
测试
curl --location --request GET 'http://xxx.xxxx.com:10000/im/account/get?accountId=liuk'
说明
当请求xxx.xxxx.com时,实际到本地的127.0.0.1:10000,即请求到envoy,envoy会将请求转发至62.234.197.82:80
tcp
envoy.yaml
static_resources:
listeners:
- address:
socket_address:
address: 0.0.0.0
port_value: 10000
filter_chains:
- filters:
- name: envoy.tcp_proxy
config:
stat_prefix: ingress_tcp
cluster: baidu_server
access_log:
- name: envoy.file_access_log
config:
path: /dev/stdout
clusters:
- name: baidu_server
connect_timeout: 0.25s
type: strict_dns
lb_policy: round_robin
hosts:
- socket_address:
address: 61.135.169.125
port_value: 443
本地配置hosts
127.0.0.1 www.baidu.com
启动docker
$ docker run -d -p 10000:10000 -v `pwd`/envoy.yaml:/etc/envoy/envoy.yaml --name envoyproxy envoyproxy/envoy-alpine:v1.14.1
测试
curl https://www.baidu.com:10000