Signed HTTP Exchange (SXG) support for nginx. Nginx will convert responses from
the upstream application into SXG when client requests include the Accept: application/signed-exchane;v=b3 HTTP header with highest qvalue.
You have to install libsxg binary into your system. You can get it from here.
Nginx-SXG module requires configuration on nginx.
Activation flag of SXG module.
on: Enable this plugin.off: Disable this plugin.
Default value is off.
Full path for the certificate file. The certificate requires all of the conditions below to match.
- Has
CanSignHttpExchangesextension. - Uses ECDSA256 or ECDSA384.
This directive is always required.
Full path for the private key for the certificate.
This directive is always required.
URL for CBOR encoded certificate file. The protocol must be https.
This directive is always required.
URL for the validity information file. It must be https and must be the same
origin with the website.
This directive is always required.
Maximum HTTP body size this module can generate SXG from. Default value is
67108864 (64 MiB).
An absolute path in which nginx will generate and serve the CBOR-encoded certificate file. But make sure that the OCSP responder for the certificate is accessible from your nginx server to get OCSP responses. This directive is optional.
load_module "modules/ngx_http_sxg_filter_module.so";
http {
upstream app {
server 127.0.0.1:3000;
}
include mime.types;
default_type application/octet-stream;
subrequest_output_buffer_size 4096k;
server {
listen 80;
server_name example.com;
add_header X-Content-Type-Options nosniff;
add_header Vary Accept;
sxg on;
sxg_certificate /path/to/certificate-ecdsa.pem;
sxg_certificate_key /path/to/private-key-ecdsa.key;
sxg_cert_url https://cdn.test.com/example.com.cert.cbor;
sxg_validity_url https://example.com/validity/resource.msg;
location / {
proxy_pass http://app;
}
}
}
nginx-sxg-module automatically includes signatures of subresources in its responses, allowing end users to prefetch it from distributor.
When finding link: rel="preload" entry in HTTP response header from upstream, this plugin will collect the specified resource to the upstream and append rel="allowed-alt-sxg";header-integrity="sha256-...." to the original HTTP response automatically.
This functionality is essential to subresource preloading for faster cross-site navigation.