OptimalBits/redbird

Http -> Https redirects when path is specified redirrect incorrectly

clarkbains opened this issue · 0 comments

If I have a route where pihole.mydomain.com proxies to 192.168.2.45/admin, with ssl enabled, and I try to hit http://pihole.mydomain.com, it will send back a 302 to https://pihole.mydomain.com/admin. My browser then follows this, which goes back through the reverse proxy, and ends up hitting my pihole at 192.168.2.45/admin/admin. This results in an error, since the admin interface is at 192.16 8.2.45/admin.

I expect that when the redirect happens, it should be using the path from the original request, not from the proxied request.

Redirect specified is redbird.register("pihole.xxxxxxxxx.com", "192.168.2.45", {ssl:true});
redbird was started with

new require('redbird')({
		port: 80,
		secure: true,
		ssl: [
			{
				port: 443,
				key: 'xxxxxxx',
				cert: 'xxxxxxx',
			}
		]
	})

Here is the output of curl. I'm using the Host header hack since I don't have dns pointing at my development server

curl 'http://pihole.xxxxxxxxx.com/index.php?login' -vvv
*   Trying 192.168.2.46:80...
* Connected to pihole.xxxxxxxxx.com (192.168.2.46) port 80 (#0)
> GET /index.php?login HTTP/1.1
> Host: pihole.xxxxxxxxx.com
> User-Agent: curl/7.71.1
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Found
< Location: https://pihole.xxxxxxxxx.com/admin/index.php?login
< Date: Sat, 22 Aug 2020 00:03:11 GMT
< Connection: keep-alive
< Transfer-Encoding: chunked
< 
* Connection #0 to host pihole.xxxxxxxxx.com left intact

When that request is made, it will go through redbird again and try and hit my pihole with the path http://192.168.2.45/admin/admin/index.php?login, and it should instead be http://192.168.2.45/admin/index.php?login