nginx는 EC2의 API 서버로 리디렉션됩니다.

nginx는 EC2의 API 서버로 리디렉션됩니다.

일부 Python 마이크로서비스를 실행하는 EC2 서버(프라이빗 서브넷)가 있습니다. Apps EC2(퍼블릭 서브넷)에서 실행되는 애플리케이션에서 Python 마이크로서비스에 액세스하려고 합니다.

Apps EC2(퍼블릭 서브넷)에서 nginx를 역방향 프록시로 설정했습니다. nginx에 대한 최소한의 지식을 바탕으로 다음과 같은 conf 파일을 추가했습니다.

server {

        listen   80;
        server_name 3.23.xxx.xxx EC2-public.test.com;

        location / {
                root   /var/www/Myapp/App;
                index  index.php index.html index.htm;
                autoindex on;  
        }
        #Application APIs on EC2 public 
        location /api {
                proxy_pass http://myappsip-EC1.:4000;
        }

        #My second EC2 Python microservice APIs
        location /pyserv {
                proxy_pass http://myprivateEC2-IP:5000/;
         }

}

문제는 Proxy_pass에 절대 경로를 제공하면 공개 URL에서 마이크로서비스 EC2의 서비스에 액세스할 수 있지만 이와 관련된 경로에는 액세스할 수 없다는 것입니다. 모든 상대 경로는 기본 EC2 루트 경로에서 가져온 것으로 보입니다.

=> EC2-public.test.com/ (primary application - works)
=> EC2-public.test.com/pyserv      (API1 on second EC2 - http://myprivateEC2-IP:5000/- works since given in proxy_pass) 
=> EC2-public.test.com/pyserv/srv1 (API 2 on second EC2 - http://myprivateEC2-IP:5000/srv1 - does not work) 

두 번째 EC2 루트 경로를 언급하지 않은 것 같아서 뭔가 빠졌다는 것을 알고 있습니다. 하지만 방법을 알 수 없습니다.

감사해요

답변1

후행 슬래시를 잊어버렸습니다 location /pyserv/:)

관련 정보