Я работаю над переносом обратного прокси-сервера NodeJS с Apache на Nginx.Последнее, что нужно решить, - как отфильтровать мой входящий URI для моего бэкэнда NodeJS.
По какой-либо устаревшей причине API-интерфейс NodeJS отвечает на URI, такие как example.com/route/1001
, тогда как интерфейс Apache и весь клиентский код фактически отправляютна example.com/api/route/1001
Таким образом, я надеюсь убрать раздел / api URI запроса и отправить только вторую половину к Node API.
Я играл в Regxr, пытаясь понять это правильно ив итоге у (?!api)\b\S+
все шло хорошо: regexr.com/4lp4e
Однако я не знаком с синтаксисом Nginx того, как я получаю это в моей переменной.Вот что у меня сейчас:
server {
server_name <domain>;
access_log /var/log/nginx/<domain>-access.log;
# API endpoint - (?!api)\b\S+
location /api {
if ($request_uri ~* ((?!api)\b\S+) ) {
set $last $1;
}
add_header X-uri "$last";
rewrite /api /$last break;
#proxy_redirect off;
proxy_pass http://127.0.0.1:4000;
}
listen 80;
listen [::]:80;
}