Выбор ответа Middle Балансировка и nginx обновлено

Слеш в proxy_pass

Вопрос

Конфиг: location /api/ { proxy_pass http://backend/; }. Клиент запрашивает /api/users/1. Какой URI получит бэкенд?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: /users/1. Если в proxypass указан URI (даже просто /), часть запроса, совпавшая с location, заменяется на него: /api/ превращается в /, получается /users/1.

Варианты ответа

  1. /users/1правильный ответ
  2. /api/users/1
  3. /api//users/1
  4. /

Разбор

Если в proxy_pass указан URI (даже просто /), часть запроса, совпавшая с location, заменяется на него: /api/ превращается в /, получается /users/1. Без слеша (proxy_pass http://backend;) бэкенд получил бы исходный /api/users/1. Эта разница частая причина 404 после настройки прокси.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.