:8884 {
	map {host} {upstream} {
		foo.example.com 1.2.3.4
		default 2.3.4.5
	}

	# Upstream placeholder with a port should retain the port
	reverse_proxy {upstream}:80
}

:8885 {
	map {host} {upstream} {
		foo.example.com 1.2.3.4:8080
		default 2.3.4.5:8080
	}

	# Upstream placeholder with no port should not have a port joined
	reverse_proxy {upstream}
}
----------
{
	"apps": {
		"http": {
			"servers": {
				"srv0": {
					"listen": [
						":8884"
					],
					"routes": [
						{
							"handle": [
								{
									"defaults": [
										"2.3.4.5"
									],
									"destinations": [
										"{upstream}"
									],
									"handler": "map",
									"mappings": [
										{
											"input": "foo.example.com",
											"outputs": [
												"1.2.3.4"
											]
										}
									],
									"source": "{http.request.host}"
								},
								{
									"handler": "reverse_proxy",
									"upstreams": [
										{
											"dial": "{upstream}:80"
										}
									]
								}
							]
						}
					]
				},
				"srv1": {
					"listen": [
						":8885"
					],
					"routes": [
						{
							"handle": [
								{
									"defaults": [
										"2.3.4.5:8080"
									],
									"destinations": [
										"{upstream}"
									],
									"handler": "map",
									"mappings": [
										{
											"input": "foo.example.com",
											"outputs": [
												"1.2.3.4:8080"
											]
										}
									],
									"source": "{http.request.host}"
								},
								{
									"handler": "reverse_proxy",
									"upstreams": [
										{
											"dial": "{upstream}"
										}
									]
								}
							]
						}
					]
				}
			}
		}
	}
}