nginx: Proxy_pass를 사용하여 프록시된 URL에 추가

nginx: Proxy_pass를 사용하여 프록시된 URL에 추가

저는 PHP 기반 애플리케이션을 호스팅하는 서버를 재구성해야 하는 몇 가지 레거시 문제를 다루고 있습니다. 결정 중 하나는 Apache에서 Nginx로 이동하는 것이었습니다.

이제 애플리케이션은 두 가지 종류의 응답을 호스팅합니다.

/some/path -> HTML templates
/api/some/path -> JSON

이 애플리케이션은 Laravel을 기반으로 합니다. 이제 두 개의 가상 호스트 my.app.comapi.app.com. 내가 괜찮은 해결책이라고 생각한 것은 요청 경로 앞에 추가된 요청 api.app.com을 프록시 하는 것입니다. 그래서;my.app.com/api

GET api.app.com/user -> NGINX PROXY -> my.app.com/api/user

나는 Nginx 구성의 전문가가 아니며 이것이 작동해야 한다고 생각합니다.

location / {
    proxy_pass http://my.app.com:8888/api;
    proxy_set_header X-Real-IP $remote_addr;
}

아이디어는 GET을 시도하는 사람들이 api.app.com/something실제로 응답을 받도록 하는 것입니다. my.app.com/api/something 그러나 그것은 작동하지 않습니다. 경로에서 경로를 찾을 수 없다는 앱의 예외가 계속 발생합니다.

여기서 무슨 일이 일어나고 있는지 말해 줄 수 있는 사람 있나요?

답변1

의 팁https://serverfault.com/a/586607:

location ~ /(?<path>.*) {
    proxy_pass http://my.app.com:8888/api/$path;
    proxy_set_header X-Real-IP $remote_addr;
}

관련 정보