Reverse proxy
Publier SwissKnife en HTTPS sans retirer les en-têtes nécessaires à FFmpeg WASM.
SwissKnife n'a pas d'authentification. Un reverse proxy sert surtout à terminer TLS. Le point critique n'est pas un cookie : c'est SharedArrayBuffer, requis par FFmpeg WASM.
nginx.conf du produit envoie notamment :
Cross-Origin-Opener-Policy: same-originCross-Origin-Embedder-Policy: require-corpCross-Origin-Resource-Policy: same-origin
Si le proxy les retire ou les remplace, le moteur audio/vidéo ne charge plus. Les conversions d'images Canvas peuvent encore fonctionner.
Les exemples ci-dessous utilisent swissknife.example.com et 127.0.0.1:2501. Adaptez le nom d'hôte ; ne changez le port que si votre mapping hôte n'est plus 2501.
Restreindre l'écoute Docker
Pour n'accepter le trafic que depuis le proxy local :
services:
swissknife:
ports:
- "127.0.0.1:2501:8080"Caddy installé sur l'hôte
swissknife.example.com {
encode zstd gzip
reverse_proxy 127.0.0.1:2501
}Caddy transmet en général les en-têtes de la réponse amont. Vérifiez dans les outils développeur du navigateur que COOP et COEP sont toujours présents sur / et sur /ffmpeg/ffmpeg-core.wasm.
Nginx installé sur l'hôte
server {
listen 443 ssl http2;
server_name swissknife.example.com;
ssl_certificate /etc/letsencrypt/live/swissknife.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/swissknife.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:2501;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_hide_header Cross-Origin-Opener-Policy;
proxy_hide_header Cross-Origin-Embedder-Policy;
proxy_hide_header Cross-Origin-Resource-Policy;
add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Cross-Origin-Embedder-Policy "require-corp" always;
add_header Cross-Origin-Resource-Policy "same-origin" always;
}
}Nginx n'ajoute pas toujours les add_header du backend si vous en redéfinissez d'autres. Le bloc ci-dessus les pose explicitement. Testez la configuration avant rechargement.
Ne pas activer COEP sur la documentation
Cette documentation et le site de présentation n'ont pas besoin de require-corp. Ne copiez pas ces en-têtes hors de l'application de conversion.