nginx: добавить к проксируемому URL-адресу proxy_pass

nginx: добавить к проксируемому URL-адресу proxy_pass

Я имею дело с некоторыми устаревшими проблемами, где мне нужно перенастроить серверы, на которых размещено приложение на основе PHP. Одним из решений был переход с Apache на Nginx.

Теперь приложение поддерживает два вида ответов;

/some/path -> HTML templates
/api/some/path -> JSON

Приложение основано на Laravel. Теперь у меня есть два виртуальных хоста, my.app.comи api.app.com. Я подумал, что приличным решением будет проксировать api.app.comзапросы my.app.comс /apiдобавлением к пути запроса. Итак;

GET api.app.com/user -> NGINX PROXY -> my.app.com/api/user

Я не эксперт в настройке Nginx, но вот что, по-моему, должно сработать:

location / {
    proxy_pass http://my.app.com:8888/api;
    proxy_set_header X-Real-IP $remote_addr;
}

Идея заключается в том, чтобы гарантировать, что люди, пытающиеся GET из, api.app.com/somethingна самом деле получат ответ от my.app.com/api/something Но это не работает. Я продолжаю получать исключения от приложения, говорящие о том, что путь не может быть найден в маршрутах.

Кто-нибудь может мне объяснить, что здесь происходит?

решение1

Совет отhttps://serverfault.com/a/586607:

location ~ /(?<path>.*) {
    proxy_pass http://my.app.com:8888/api/$path;
    proxy_set_header X-Real-IP $remote_addr;
}

Связанный контент