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.