CDN Product Images: Configuration
Admin configuration of the Sylius plugin CDN Product Images: CDN domain, signing API and token lifecycle.
CDN Product Images: Configuration
This documentation always describes the latest published version.
Live Demo: Try this and other plugins live — no installation, no risk: demo.markus-michalski.net
Admin interface
Configuration is fully admin-editable, not driven by environment variables: Admin sidebar → MMKreativ Plugins → CDN Integration.
| Setting | Default | Description |
|---|---|---|
| CDN domain | empty | the host (and, for local dev, port) your mm-media-cdn instance serves signed image URLs from, e.g. cdn.example.com or localhost:8090 |
| Signing API URL | empty | the base URL of mm-media-cdn's own signing/ microservice, e.g. https://signing.example.com |
| Signing API token | empty | bearer credential for the signing API, never the raw imgproxy secret. Stored encrypted; leaving it blank on save keeps the current token unchanged |
| URL scheme override | empty (= whatever the signing service returns) | only for local dev without TLS, e.g. http |
As long as CDN domain/Signing API URL/token are empty, the plugin simply never recognizes any URL as CDN-resolvable - every image then either takes the normal local-upload path or passes through unchanged as a foreign URL. Nothing crashes.
Token lifecycle
- The field never displays the current token value (not even encrypted) - only a status: "configured" / "not configured" / "stored but no longer decryptable".
- To remove a token, use the dedicated "Remove token" button above the form (with a confirmation dialog) instead of clearing the field and saving - that leaves the stored token unchanged.
- Rotating your own
APP_SECRET/kernel.secretpermanently un-decrypts a stored token. Nothing crashes, but CDN images stop being signed until the token is re-entered via the same settings page. - The resolved settings themselves are briefly cached - a change takes effect within about a minute, no manual cache-clear needed.
Container requirements
The plugin needs an HTTP client and a cache pool available in the host app's container (autowired via HttpClientInterface/CacheInterface) - any Symfony app with framework.http_client enabled and the default cache.app pool already provides both.
Practical examples
Production:
| Field | Value |
|---|---|
| CDN domain | cdn.mmkreativ.example |
| Signing API URL | https://signing.mmkreativ.example |
| URL scheme override | empty |
Local development against an mm-media-cdn stack without TLS:
| Field | Value |
|---|---|
| CDN domain | localhost:8090 |
| Signing API URL | http://localhost:8091 |
| URL scheme override | http |
Rotating a token without touching existing image URLs: click "Remove token", enter the new token, save - CDN URLs already stored on products/taxons stay unchanged, only the next signing request automatically uses the new token.