使用 Nginx 将子路径重定向到外部主机

使用 Nginx 将子路径重定向到外部主机

我需要在 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;

那么您最终至少会得到/重写输出。

相关内容