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에서 내가 무엇을 놓치고 있습니까?
답변
다시 쓰기 줄을 보자.
rewrite /tomcatapi/(.*) $1 break;
에 괄호로 묶인 비트 (예 : 뒤에 /tomcatapi/
나오는 모든 것 )를 $1
다시 작성한 URI의 유일한 내용으로 사용합니다.
귀하의 예에서, 이후에는 아무것도 /tomcatapi/
없으므로 재 작성은 비워집니다. 이것은 nginx가 신음하는 것입니다.
다시 쓰기 규칙을 다음으로 변경하면
rewrite /tomcatapi/(.*) /$1 break;
그런 다음 항상 /
다시 쓰기 출력 에서 끝납니다 .