Nginx를 사용하여 하위 경로를 외부 호스트로 리디렉션


13

Nginx에서 서브 패스를 동일한 서브넷에있는 다른 서버로 리디렉션하는 매우 간단한 맵을 만들어야합니다.

  • Nginx 서버 : 192.168.0.2
  • Tomcat 서버 : 192.168.0.3:8443

이것을 서버 섹션에 넣으려고했습니다.

    location /tomcatapi/ {
        rewrite /tomcatapi/(.*) $1 break;
        proxy_pass http://192.168.0.3:8443;
    }

하지만 http://www.myservice.com/tomcatapi/ 에 액세스 할 수있는 모든 것은 500 오류 페이지이며 nginx 로그 파일에는이 오류가 있습니다.

    the rewritten URI has a zero length

이 conf에서 내가 무엇을 놓치고 있습니까?

답변:


12

다시 쓰기 줄을 보자.

rewrite /tomcatapi/(.*) $1 break;

에 괄호로 묶인 비트 (예 : 뒤에 /tomcatapi/나오는 모든 것 )를 $1다시 작성한 URI의 유일한 내용으로 사용합니다.

귀하의 예에서, 이후에는 아무것도 /tomcatapi/없으므로 재 작성은 비워집니다. 이것은 nginx가 신음하는 것입니다.

다시 쓰기 규칙을 다음으로 변경하면

rewrite /tomcatapi/(.*) /$1 break;

그런 다음 항상 /다시 쓰기 출력 에서 끝납니다 .


답장을 보내 주셔서 감사합니다. 어쨌든 "/"를 추가했지만 이제 브라우저가로드 상태에 갇힌 URL에 액세스하고 로그 파일에 다른 오류가 표시됩니다. 업스트림이 업스트림에서 응답 헤더를 읽는 동안 유효한 HTTP / 1.0 헤더를 보내지 않았습니다.
carlo.polisini

Tomcat 서버의 로그는 무엇을 말합니까?
Flup

오류를 발견했습니다. 실수는 앱이 http가 아닌 https에서만 가능하다는 것입니다! 그래서 구문은 수정 직후에, http가 https로 대체되어 작동하게되었습니다.
carlo.polisini
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.