我需要在 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
我在这次会议上遗漏了什么?
答案1
让我们看看你的重写行:
rewrite /tomcatapi/(.*) $1 break;
您正在采取括号内的位(即 之后的所有内容/tomcatapi/
),将其分配给$1
,并将其用作重写 URI 的唯一内容。
在您的示例中, 之后没有任何内容/tomcatapi/
,因此重写最终为空,这就是 nginx 所抱怨的。
如果将重写规则更改为
rewrite /tomcatapi/(.*) /$1 break;
那么您最终至少会得到/
重写输出。