Fix traefik rule priority for media router (#4244)

* Add option to serve media files locally using nginx

* Fix nginx media location and storage issue

* Fix traefik django-media typo

* Add certresolver property to web-media-router

* Add trailing slash in nginx configuration to avoid path traversal exploits

* Remove autoindexing from nginx configuration so nginx uses its default off setting

* Use nginx to serve media files if cloud provider is None

* Add back warning about lack of media files without Docker or Cloud providers

* Update documentation

* Fix typos and rephrase

Co-authored-by: Arkadiusz Ryś <arkadiusz.michal.rys@gmail.com>

* Change Traefik media router rule generation to force priority

The web-secure-router could end up having priority over the web-media-router when the www subdomain was used.
This fix adds the www subdomain to the web-media-router if it's also present in the web-secure-router rule.
Traefik looks at the length of rules to determine priority when no explicit priority is set.
The web-media-router needs to always have priority over the web-secure-router in order for the media files to be served.

* Add space to Traefik rule

---------

Co-authored-by: Bruno Alla <alla.brunoo@gmail.com>
Co-authored-by: Bruno Alla <browniebroke@users.noreply.github.com>
This commit is contained in:
Arkadiusz Michał Ryś 2023-04-04 11:25:06 +02:00 committed by GitHub
parent 1cba3b62e0
commit e13f7afcb8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -60,7 +60,11 @@ http:
{%- if cookiecutter.cloud_provider == 'None' %}
web-media-router:
{%- if cookiecutter.domain_name.count('.') == 1 %}
rule: "(Host(`{{ cookiecutter.domain_name }}`) || Host(`www.{{ cookiecutter.domain_name }}`)) && PathPrefix(`/media/`)"
{%- else %}
rule: "Host(`{{ cookiecutter.domain_name }}`) && PathPrefix(`/media/`)"
{%- endif %}
entryPoints:
- web-secure
middlewares: