Linux Labs

Веб-стек / Ступень 2 из 9

Reverse proxy и 502

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 5 из 8 · на машине · 7 мин

Путь, который видит приложение

Прокси передаёт приложению и путь страницы. Здесь — как одна косая черта в proxy_pass меняет этот путь.

location /api/ ловит пути, которые начинаются с /api/. Если в proxy_pass после порта ничего нет, приложение получает путь как есть. Если после порта стоит путь — хотя бы /, — nginx заменяет им совпавшее начало /api/:

proxy_pass в location /api/ Запрос /api/items придёт как
http://127.0.0.1:8002 /api/items
http://127.0.0.1:8002/ /items

Когда пути подходят несколько location, nginx берёт тот, чьё начало длиннее: /api/items уйдёт в location /api/, а не в location /.

Проверь себя 1 вопрос

В location /api/ стоит proxy_pass http://127.0.0.1:8002/;. С каким путём придёт в приложение запрос /api/orders/7?

  • Так было бы без пути после порта. Здесь после порта /, и nginx заменил им совпавшее начало /api/.

  • / в proxy_pass заменяет совпавшее начало, а не весь путь: хвост orders/7 сохраняется.

  • Заменяется только совпавшее с location начало /api/; хвост orders/7 идёт как есть.

После порта в proxy_pass стоит путь /, и nginx ставит его на место совпавшего с location начала /api/. Хвост orders/7 идёт как есть — приложение получает /orders/7.

Склад запустил своё приложение lab-stock на 127.0.0.1:8002. Его адреса начинаются с /items: /items — список товаров, /items/<номер> — один товар. Магазин хочет отдавать их под своим именем с префиксом /api/, а остальные адреса сайта оставить своему приложению. Оба приложения печатают путь, который получили, — по ответу видно, что дошло до каждого. Готово, когда склад получает адреса без префикса, а магазин — все остальные.

Упражнение · сделать

Отдай /api/ складу

Сделай так, чтобы запросы http://shop.lab.test/api/items… приходили в приложение склада lab-stock как /items…, а остальные адреса сайта по-прежнему шли в магазин. Сайт — /etc/nginx/sites-available/shop.

Войти и начать Машина доступна после входа

Цели · 0 из 2

  • Отдать адреса /api/ приложению склада ещё не выполнена
  • Оставить остальные адреса магазину ещё не выполнена

Цели шага

0 из 2
  • Отдать адреса /api/ приложению склада — ещё не выполнена
  • Оставить остальные адреса магазину — ещё не выполнена
Ubuntu 24.04

Цели шага

0 из 2
  • Отдать адреса /api/ приложению склада — ещё не выполнена
  • Оставить остальные адреса магазину — ещё не выполнена
Загрузка…