Skip to content

Instantly share code, notes, and snippets.

@un-def
Created May 17, 2024 17:50
Show Gist options
  • Save un-def/e0f88bc3b50fa1825a949ec74b5ad52d to your computer and use it in GitHub Desktop.
Save un-def/e0f88bc3b50fa1825a949ec74b5ad52d to your computer and use it in GitHub Desktop.
Nginx fix Location header on redirects behind reverse proxy
http {
map $http_x_forwarded_proto=$http_x_forwarded_port $redirect_port {
http=80 '';
https=443 '';
default :$http_x_forwarded_port;
}
server {
listen 8080;
location / {
proxy_pass http://unix:/tmp/nginx.sock;
proxy_set_header Host $host;
proxy_buffering off;
proxy_request_buffering off;
proxy_redirect http://$host/ $http_x_forwarded_proto://$http_x_forwarded_host$redirect_port/;
}
}
server {
listen unix:/tmp/nginx.sock;
location / {
root /data;
autoindex on;
}
}
}
@un-def
Copy link
Author

un-def commented May 18, 2024

Apparently this is no longer necessary.

RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1, June 1999 requires an absolute URI: 14.30 Location.

RFC 7231 Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content, June 2014, which obsoletes RFC 2616, allows a relative URI: 7.1.2. Location.

RFC 9110 HTTP Semantics, June 2022, which obsoletes RFC 7231, allows a relative URI: 10.2.2. Location.

TL;DR use absolute_redirect off.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment