eclipse 中的 nginx 和 tomcat - 多个应用程序

eclipse 中的 nginx 和 tomcat - 多个应用程序

我运行 Tomcat,并使用 Nginx 作为负载均衡器。为了保持所有重定向等的一致性,我还在 Eclipse 前面运行它。

如果您尝试配置多个虚拟主机,Eclipse 中的 Tomcat 似乎会失败。因此,我需要将每个应用程序配置为从 Eclipse 中的不同 URL 运行。例如server.xml

  <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
    <Context docBase="app1" path="/" reloadable="true" source="org.eclipse.jst.jee.server:app1"/>
    <Context docBase="app2" path="/app2" reloadable="true" source="org.eclipse.jst.jee.server:app2"/>
  </Host>

问题是当我代理它时,我无法让它使用子文件夹中的代码app2。它从根目录提供服务。而且我似乎也无法通过重写来修复它...

Nginx 配置有...

location ~ \.(do|jsp)$ {
    #rewrite ^(.*) $1 break;
    proxy_pass              http://127.0.0.1:8080;
    proxy_set_header        Host $http_host;
    proxy_set_header        X-Real-IP $remote_addr;
}

我想要做的是:

    proxy_pass              http://127.0.0.1:8080/app2;

但这似乎是不允许的。

我知道如何使用服务器来配置它。但 Eclipse 似乎只能与单个虚拟主机配合使用。所以我只能使用文件夹...

我错过了什么?

答案1

你读过文档

Syntax:  proxy_pass URL;
Default: —
Context: location, if in location, limit_except

设置代理服务器的协议和地址以及位置应映射到的可选 URI。作为协议,可以指定“http”或“https”。地址可以指定为域名或 IP 地址,以及可选端口:

proxy_pass http://localhost:8000/uri/;

[...]

在某些情况下,无法确定要替换的请求 URI 的部分:

使用正则表达式指定位置时。在这种情况下,应该指定不带 URI 的指令。

使用重写指令在代理位置内更改 URI 时,并且相同的配置将用于处理请求(中断):

location /name/ {
    rewrite    /name/([^/]+) /users?name=$1 break;
    proxy_pass http://127.0.0.1;
}

在这种情况下,指令中指定的 URI 将被忽略,并且完整更改的请求 URI 将传递给服务器。

[...]

相关内容