РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗dcNxPxSn 12 of 13 menu
◀ ▶

Имя хоста в Docker

Имя хоста выбирает сервер, и один Nginx различает два имени на одном порту. Заголовок Host в запросе сравнивают с директивой server_name, и подходит только один блок server из файла в conf.d.

Статика для site.localhost лежит в site/index.html со словом hello:

<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>page</title> </head> <body> hello </body> </html>

Для app.localhost ответ приложения в app/index.html содержит слово app:

<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>page</title> </head> <body> app </body> </html>

Два блока server слушают 80 с разными server_name. Второй проксирует корень на app:8000. Содержимое default.conf:

server { listen 80; server_name site.localhost; root /usr/share/nginx/html; index index.html; location / { try_files $uri $uri/ =404; } } server { listen 80; server_name app.localhost; location / { proxy_pass http://app:8000; } }

Сервис web на nginx:1.30 монтирует конфиг, site и пару 8080:80. Сервис app без ports. Файл compose.yaml:

services: web: image: nginx:1.30 ports: - "8080:80" volumes: - "$PWD/site:/usr/share/nginx/html" - "$PWD/default.conf:/etc/nginx/conf.d/default.conf" app: image: python:3.14 volumes: - "$PWD/app:/app" working_dir: /app command: ["python", "-m", "http.server", "8000", "--bind", "0.0.0.0"]

После подъёма в фоне откроем http://site.localhost:8080 и http://app.localhost:8080. Оба имени ведут на один опубликованный порт, но тексты берут из разных источников. Запуск проекта:

docker compose up -d

Опишите сервис land с хостами desk.localhost для статики и svc.localhost для прокси на 8093 компьютера.

Откройте оба имени в браузере и объясните, почему при одном порту ответы различаются.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить