경로별 Nginx, Weblogic 및 역방향 프록시

경로별 Nginx, Weblogic 및 역방향 프록시

nginx에서 경로를 사용할 때 역방향 프록시가 작동하도록 하는 데 문제가 있습니다. 내가 하려는 것은 애플리케이션에 대해 하나의 주소를 갖고 경로로 환경을 지정하는 것입니다. 경로에 따라 다른 서버를 가리킵니다. 직접 링크를 사용할 때 역방향 프록시가 작동하도록 할 수 있지만 경로를 사용하면 404 오류가 발생합니다.

app.foo.bar/dev = 404 오류 devapp.foo.bar = 성공

app.foo.bar/dev에서 내가 무엇을 잘못했나요?

다음은 작동하는 역방향 프록시 설정이지만 사용하고 싶지 않습니다.

server  {
  listen  80;   # DEV Application Proxy
  server_name  devapp.foo.bar;
  location  / {
    proxy_pass  http://appserver.foo.bar:7010;
    proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-for $remote_addr;
        port_in_redirect off;
        proxy_redirect   http://appserver.foo.bar:7010/ /;
        proxy_connect_timeout 300;
    }
  }

다음은 경로를 사용하여 수행하려는 작업의 일부이지만 404 오류가 발생합니다.

# APP Environment Proxy

server {

  listen 80;
  server_name app.foo.bar;
     location /dev {
      proxy_pass http://appserver.foo.bar:7010;
      proxy_set_header    Host            $host;
      proxy_set_header    X-Real-IP       $remote_addr;
      proxy_set_header    X-Forwarded-for $remote_addr;
      port_in_redirect off;
      proxy_redirect     http://appserver.foo.bar:7010 /;
      proxy_connect_timeout 300;

  }
}

이런 유형의 설정을 Google에서 검색했지만 해결책을 찾을 수 없습니다. 도움을 주셔서 미리 감사드립니다.

답변1

가 있으면 proxy_pass http://appserver.foo.bar:7010;nginx는 정규화된 URI를 백엔드에 전달된 요청 URL에 추가합니다.

따라서 을(를) 요청하면 http://app.foo.bar/dev요청이 로 이동합니다 http://appserver.foo.bar:7010/dev. 개발 서버에 이 경로가 없으면 nginx가 클라이언트에 반환하는 404를 반환합니다.

http://app.foo.bar/dev로 시작하는 모든 요청을 이동하여 http://appserver.foo.bar:7010나머지 모든 URI가 백엔드 서버 URI에 추가되도록 하려면 다음 구성을 사용할 수 있습니다.

location ~ ^/dev(.+)$ {
    proxy_pass http://appserver.foo.bar:7010$1$is_args$args;
    ...
}

따라서 정규식을 사용하여 변수에 대한 부분을 캡처한 /dev다음 해당 변수를 경로 끝에 추가합니다 proxy_pass.

관련 정보