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

car*_*ini 19 nginx proxy reverse-proxy

我需要在 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;
    }
Run Code Online (Sandbox Code Playgroud)

但是我访问http://www.myservice.com/tomcatapi/是一个 500 错误页面,在 nginx 日志文件中我有这个错误:

    the rewritten URI has a zero length
Run Code Online (Sandbox Code Playgroud)

我在这个 conf 中缺少什么?

Flu*_*lup 17

让我们看看你的重写行:

rewrite /tomcatapi/(.*) $1 break;
Run Code Online (Sandbox Code Playgroud)

您将括号中的位(即 之后的所有内容/tomcatapi/)分配给$1,并将其用作重写 URI 的唯一内容。

在您的示例中, 之后没有任何内容/tomcatapi/,因此重写最终为空,这就是 nginx 所抱怨的。

如果您将重写规则更改为

rewrite /tomcatapi/(.*) /$1 break;
Run Code Online (Sandbox Code Playgroud)

那么你总是至少/在重写输出中结束。