DNSLink Gateway is an extension of [path-gateway] that enables hosting a specific content path under a specific DNS name.
This document describes the delta between [path-gateway] and this gateway type.
In short:
Host headerGET /[{path}][?{params}]Downloads data at specified path under the content path for DNSLink name provided in Host header.
path – optional path to a file or a directory under the content root sent in Host HTTP header
Host: example.com then the content path to resolve is /ipns/example.com/{path}HEAD /[{path}][?{params}]Same as GET, but does not return any payload.
Below MUST be implemented in addition to "HTTP Request" of [path-gateway].
Host (request header)Defines the DNSLink name
to RECURSIVELY resolve into an immutable /ipfs/{cid}/ prefix that should
be prepended to the path before the final IPFS content path resolution
is performed.
Implementations MUST ensure DNSLink resolution is safe and correct:
Example: resolving an advanced DNSLink chain
To illustrate, given DNSLink records:
_dnslink.a.example.com TXT record: dnslink=/ipns/b.example.net/path-b_dnslink.b.example.net TXT record: dnslink=/ipfs/bafy…qy3k/path-cHTTP client sends GET /path-a request with Host: a.example.com header
which recursively resolves all DNSLinks and produces the final immutable
content path:
Host header + /path-a → /ipns/a.example.net/path-aa.example.net replaces /ipns/a.example.net with /ipns/b.example.net/path-bb.example.net replaces /ipns/b.example.net with /ipfs/bafy…qy3k/path-c/ipfs/bafy…qy3k/path-c/path-b/path-aSame as "HTTP Response" of [path-gateway].
DNSLink Gateway implementations SHOULD include _redirects file support
defined in [web-redirects-file].
We gratefully acknowledge the following individuals for their valuable contributions, ranging from minor suggestions to major insights, which have shaped and improved this specification.