Не получается настроить proxy_pass с параметром
Имеется поддомен s. и есть сервер ExpressJS. Хочу настроить nginx так, чтобы он слушал запросы на s.example.com/2t9HCYA, но к прокси запрос передавал как example.com/s/2t9HCYA. Пробовал два варианта:
1) proxy_pass http://localhost:3000/s$1; - к прокси серверу приходит просто /s
2) Также к прокси приходит только /s:
rewrite ^ /s$1 break;
proxy_pass http://localhost:3000;
Хотя если передать значение $1 через proxy_set_header, то в заголовках запроса 2t9HCYA будет присутствовать. Почему эта переменная напрочь игнорируется nginx и как заставить её работать?
Ответы (1 шт):
Автор решения: Alexey Ten
→ Ссылка
Если оставлять ваш try_files и именованый location, тогда нужно правильно использовать rewrite:
location @express {
rewrite ^(.+) /s$1 break;
proxy_pass http://localhost:3000;
# другие proxy_* директивы
}
А можно переписать так:
location / {
try_files $uri /s$uri;
}
location /s/ {
proxy_pass http://localhost:3000/s/;
# другие proxy_* директивы
}