LINUX.ORG.RU
ФорумAdmin

С nginx на backend с отрезанием части URL

 


0

1

Как перенаправить запросы URL, начинающихся с /api/, на локальный сервер, слушающий на 3000-м порту, при этом обрезав /api, а остальные запросы на статику в директории /path/to/public/?

UPDATE: И почему в Gentoo одна портянка конфига для nginx, а не sites-available/* sites-enabled/* ?



Последнее исправление: delovoi (всего исправлений: 1)

UPDATE: И почему в Gentoo одна портянка конфига для nginx, а не sites-available/* sites-enabled/* ?

Потому что другой подход. Но никто не мешает сделать так же. Благо это всего лишь симлинки с директориями.

tazhate ★★★★★
()

Перенаправить, как уже выше написали, реврайтом, но это не всегда будет работать. Сервис-то тебе будет отдавать ссылки без /api/..

generator ★★★
()

Как перенаправить запросы URL, начинающихся с /api/, на локальный сервер, слушающий на 3000-м порту, при этом обрезав /api,

        location /api { proxy_pass http://127.0.0.1:3000/; }

Последний слеш важен.

i-rinat ★★★★★
()
Ответ на: комментарий от generator

И почему он здесь обрежет /api?

Потому что он так устроен. В документации об этом написано:

http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_pass

Если директива proxy_pass указана с URI, то при передаче запроса серверу часть нормализованного URI запроса, соответствующая location, заменяется на URI, указанный в директиве

/api будет заменяться на /.

i-rinat ★★★★★
()

А ещё можно вынести этот api на отдельный субдомен (api.example.com). Или научить это api работать не в корне.
На мой взгляд первый вариант более верен идеологически. При нужде легче будет вынести api на отдельный сервер например.

MrClon ★★★★★
()
Ответ на: комментарий от generator

Сервис-то тебе будет отдавать ссылки без /api/..

Да, тут нужно что-то думать.

delovoi
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.