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을 보면 항상 /정확하지 않습니다.

내가 뭘 잘못했나요?

편집: 다음 변경 사항을 적용하여 작업했습니다.

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

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

관련 정보