Сжатие в Docker
Сжатие уменьшает ответ сайта, если браузер умеет его принять.
Заголовок Accept-Encoding
в запросе подсказывает прокси, можно ли сжать тело перед отправкой.
Контейнер nginx отдаёт страницу как раньше, без настройки gzip внутри образа.
Посредник gzip
включают меткой compress=true.
Роутер на site.localhost
ссылается на сервис nginx
с middlewares=gzip.
Файл проекта с прокси и сайтом:
services:
proxy:
image: traefik:3
command:
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
nginx:
image: nginx
labels:
- traefik.enable=true
- traefik.http.middlewares.gzip.compress=true
- traefik.http.routers.web.rule=Host(`site.localhost`)
- traefik.http.routers.web.middlewares=gzip
Фоновый подъём:
docker compose up -d
Страница по http://site.localhost
выглядит как обычный nginx.
Прокси сожмёт ответ сам, когда браузер это поддерживает, сайт об этом не знает.
Опишите сервис static на nginx с хостом static.localhost, посредником pack и сжатием в полном файле с прокси.
Откройте http://static.localhost и сравните размер ответа в инструментах разработчика с вариантом без посредника сжатия в копии проекта.