Как использовать прокси nginx с токеном доступа в url?

#nginx #reverse-proxy

#nginx #обратный прокси

Вопрос:

Я использую nginx в качестве прокси для своих внутренних служб. Я хочу использовать URL как http://IP:PORT/<token>/endpoint и который должен быть проксирован на URL как http://backend/endpoint

файл nginx.conf:-

 server {
    listen 80;
    location / {
        proxy_pass         http://backend;
        proxy_set_header Authorization "Basic safdadfWU6cdfdvcmQ=";
    }
}
  

Здесь я хочу удалить <token> из URL и передать оставшуюся конечную точку на мой сервер proxy_pass. Пожалуйста, помогите мне.

Комментарии:

1. Попробуйте: rewrite ^/[^/] (/.*)$ $1 break; удалить первый элемент path из URI.

2. Спасибо за ответ @RichardSmith, Не могли бы вы сказать мне, куда мне следует поместить rewrite ^/[^/] (/.*)$ $1 break; строку в моем файле nginx.conf? Извините, я наивен с прокси nginx и конфигурацией.

3. Внутри того же блока location, что и инструкция proxy_pass.

Ответ №1:

Спасибо @Richard, Ваши предложения помогли в решении моего вопроса. Для справки других людей, обновите файл nginx.conf:-

 server {
    listen 80;
    location / {
        rewrite ^/[^/] (/.*)$ $1 break;
        proxy_pass         http://backend;
        proxy_set_header Authorization "Basic safdadfWU6cdfdvcmQ=";
    }
}
  

Теперь я могу использовать URL как http://IP:PORT/<token>/endpoint и который должен быть проксирован на URL как http://backend/endpoint

Комментарии:

1. Похоже, это ничего не делает для подтверждения того, что токен имеет какое-либо конкретное значение. Как это можно изменить на ресурс, который, например, <token> равен mySecret ?