Заголовки ответа в Docker
Заголовки ответа дописывают к странице поле, которого не было у самого сайта. Контейнер nginx отдаёт тело как обычно, а прокси перед отправкой в браузер добавляет имя и значение из метки посредника. Так задают защиту от встраивания во фрейм и другие политики без правки образа сайта.
Посредник sec ставит X-Frame-Options
в значение DENY.
Роутер на site.localhost
ведёт на nginx
с цепочкой middlewares=sec.
Полное описание проекта:
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.sec.headers.customresponseheaders.X-Frame-Options=DENY
- traefik.http.routers.web.rule=Host(`site.localhost`)
- traefik.http.routers.web.middlewares=sec
Запуск в фоне:
docker compose up -d
Стартовая страница nginx открывается по http://site.localhost.
В ответе браузера видно поле X-Frame-Options
со значением DENY,
хотя сам nginx его не задавал.
Опишите сервис page на nginx с хостом page.localhost, посредником frame и тем же заголовком X-Frame-Options в полном файле с прокси.
Откройте http://page.localhost и проверьте в инструментах разработчика, что заголовок X-Frame-Options присутствует в ответе.