-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Initial support for upstream HTTP/1.1 tunneling #13293
Changes from 6 commits
efcc5ed
40c2ac3
5ff338e
2e0857f
5d6d5de
0ddc44f
a1c9d98
eecf55c
3cfa1e9
3f7b4cb
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
# This configuration takes incoming data on port 10000 and encapsulates it in a CONNECT | ||
# request which is sent upstream port 10001. | ||
# It can be used to test TCP tunneling as described in docs/root/intro/arch_overview/http/upgrades.rst | ||
# and running `curl --x 127.0.0.1:10000 https://www.google.com` | ||
|
||
admin: | ||
access_log_path: /tmp/admin_access.log | ||
address: | ||
socket_address: | ||
protocol: TCP | ||
address: 127.0.0.1 | ||
port_value: 9903 | ||
static_resources: | ||
listeners: | ||
- name: listener_0 | ||
address: | ||
socket_address: | ||
protocol: TCP | ||
address: 127.0.0.1 | ||
port_value: 10000 | ||
filter_chains: | ||
- filters: | ||
- name: tcp | ||
typed_config: | ||
"@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy | ||
stat_prefix: tcp_stats | ||
cluster: "cluster_0" | ||
tunneling_config: | ||
hostname: host.com:10002 | ||
clusters: | ||
- name: cluster_0 | ||
connect_timeout: 5s | ||
# This ensures HTTP/1.1 CONNECT is used for establishing the tunnel. | ||
http_protocol_options: | ||
{} | ||
antoniovicente marked this conversation as resolved.
Show resolved
Hide resolved
|
||
load_assignment: | ||
cluster_name: cluster_0 | ||
endpoints: | ||
- lb_endpoints: | ||
- endpoint: | ||
address: | ||
socket_address: | ||
address: 127.0.0.1 | ||
port_value: 10001 |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -26,10 +26,11 @@ static_resources: | |
stat_prefix: tcp_stats | ||
cluster: "cluster_0" | ||
tunneling_config: | ||
hostname: host.com | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sorry, why 10002 when it's connecting to port 10001? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. My idea was to show that the destination port can be different from the port used by the upstream proxy, but maybe using There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Sending CONNECT foo.com:1234 to foo.com:1235 seems odd to me, but if you think it's worth explicitly testing for that how about a comment so other folks don't think it's just an off by one error :-) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. just to be sure we are on the same page, in this scenario, the CONNECT is sent to the upstream that is |
||
hostname: host.com:10002 | ||
clusters: | ||
- name: cluster_0 | ||
connect_timeout: 5s | ||
# This ensures HTTP/2 CONNECT is used for establishing the tunnel. | ||
http2_protocol_options: | ||
{} | ||
load_assignment: | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should the new HTTP1 example be included here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not sure about this, WDYT @alyssawilk ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, might as well for completeness.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done