使用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

我在这个会议上缺少什么?

Answers:


12

让我们看一下您的重写行:

rewrite /tomcatapi/(.*) $1 break;

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

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

如果将重写规则更改为

rewrite /tomcatapi/(.*) /$1 break;

那么您至少/在重写输出中总是会最终失败。


谢谢您的答复,无论如何,我添加了“ /”,但是现在访问浏览器处于加载状态的url中,并且在日志文件中,我现在看到了另一个错误:上游从上游读取响应头时未发送有效的HTTP / 1.0头
carlo.polisini 2013年

Tomcat服务器上的日志说什么?
2013年

我发现了错误,错误是该应用仅在https而不是http上可用!因此,语法在您更正后就正确了,只需将HTTP替换为https即可使其正常工作。
carlo.polisini 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.