proxy_protocol send incorrect header

Rozhuk Ivan rozhuk.im at gmail.com
Mon Oct 30 12:05:53 UTC 2023


Hi!

I got incorrect proxy header:
PROXY TCP4 172.16.0.208 unix:/var/run/nginx_443_test.sock 9795 0\r\nSSH-2.0-OpenSSH_9.3\r\n

Expect:
PROXY TCP4 172.16.0.208 172.16.0.254 9795 443\r\nSSH-2.0-OpenSSH_9.3\r\n



My config:
172.16.0.208 - initiator and tcp server on 4443 port.
172.16.0.254 - nginx host

initiator:
ssh root at 172.16.0.254 -p 443

tcp server on 4443: any app that can accept tcp and print received data.


nginx config:
========================================
# Set default for TLS and non TLS connections.
map $ssl_preread_protocol $upstream_proto_val {
	""			unix:/var/run/nginx_443_test.sock;
	default			unix:/var/run/nginx_443_http.sock;
}

# ALPN map table.
map $ssl_preread_alpn_protocols $upstream_alpn_val {
	default			$upstream_proto_val;
	"xmpp-client"		unix:/var/run/nginx_443_xmpp.sock;
	"xmpps-client"		unix:/var/run/nginx_443_xmpp.sock;
	"stun.turn"		unix:/var/run/nginx_443_stun.sock;
	"stun.nat-discovery"	unix:/var/run/nginx_443_stun.sock;
}


# ALPN router.
server {
	listen		*:443 rcvbuf=1m sndbuf=1m so_keepalive=30m::10;
	listen		[::]:443 rcvbuf=1m sndbuf=1m so_keepalive=30m::10 ipv6only=on;

	ssl_preread	on;
	#proxy_protocol	$proxy_protocol_val;
	proxy_protocol	on;
	proxy_pass	$upstream_alpn_val;
}


server {
	listen				unix:/var/run/nginx_443_test.sock proxy_protocol rcvbuf=1m sndbuf=1m;

	set_real_ip_from		unix:;

	proxy_protocol			on;
	proxy_pass			172.16.0.208:4443;
}

# Strip proxy protocol for xmpp.
server {
	listen				unix:/var/run/nginx_443_xmpp.sock proxy_protocol rcvbuf=1m sndbuf=1m;

	proxy_protocol			off;
	proxy_pass			127.0.0.1:5223;
}

========================================


PS: it will be very nice if this "proxy_protocol $proxy_protocol_val;" will work. It does not accept vars, only static values from config.



More information about the nginx mailing list