регулярное выражение nginx обратное расположение прокси-сервера

регулярное выражение nginx обратное расположение прокси-сервера

Я пытаюсь создать обратный прокси-сервер на основе местоположения.
Моя конфигурация не работает так, как ожидалось.

Он должен передавать все запросы, сделанные на бэкэнд /apiи /authобратно, а все остальное — на фронтэнд-сервер.

server {

 listen 80;
 server_name 127.0.0.1 localhost;

 # remove server version
 server_tokens off;

 try_files $uri $uri/ =404;

 autoindex off;

 location = /favicon.ico { access_log off; log_not_found off; }
 location = /robots.txt  { access_log off; log_not_found off; }

 location ~ ^/(api|auth)/ {
     proxy_pass http://127.0.0.1:8080/$1;
     proxy_http_version 1.1;
     proxy_set_header X-Forwarded-Proto $scheme;
     proxy_set_header Connection $connection_upgrade;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Host $host;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }

 location ~ ^/(.*) {
     proxy_pass http://127.0.0.1:3000/$1;
     proxy_http_version 1.1;
     proxy_set_header X-Forwarded-Proto $scheme;
     proxy_set_header Connection $connection_upgrade;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Host $host;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }

}

Запрос на , http://example.com/похоже, работает правильно и обслуживает фронтенд, но запрос на /apiили /authвозвращает ошибку 404 из бэкенда.

Когда я смотрю на URL запроса, который получает бэкэнд, он всегда /и это неправильно.

В чем я не прав?

EDIT: У меня все заработало со следующими изменениями:

    location ~ /(api|auth)/(.*)$ {
        proxy_pass http://127.0.0.1:8080/$1/$2;
        ...
    }

    location ~ /(.*)$ {
        proxy_pass http://127.0.0.1:3000/$1;
        ...
    }

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