Java 如何在非根URL上部署Vaadin Spring服务器

Java 如何在非根URL上部署Vaadin Spring服务器,java,spring,nginx,vaadin,vaadin4spring,Java,Spring,Nginx,Vaadin,Vaadin4spring,我正在尝试使用nginx部署两个Vaadin-Spring应用程序实例,以将请求重定向到适当的实例 第一台服务器应位于www.example.org/,第二台服务器位于www.example.org/second/,两者都位于端口80。第一台服务器侦听端口9002,第二台侦听端口9003 我的nginx配置如下所示: server_name www.example.org localhost; root /; location / {

我正在尝试使用nginx部署两个Vaadin-Spring应用程序实例,以将请求重定向到适当的实例

第一台服务器应位于
www.example.org/
,第二台服务器位于
www.example.org/second/
,两者都位于端口80。第一台服务器侦听端口9002,第二台侦听端口9003

我的nginx配置如下所示:

server_name     www.example.org localhost;
    root            /;

    location / {
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_cookie_path ~*^/.* /;
            proxy_pass http://127.0.0.1:9002/;
            proxy_redirect off;
    }

    location /second/ {
            proxy_set_header X-Forwarded-Host $host/second;
            proxy_set_header X-Forwarded-Server $host/second;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host/second;
            proxy_cookie_path ~*^/.* /;
            proxy_pass http://127.0.0.1:9003/;
            proxy_redirect off;
    }
}
第一台服务器工作完全正常

我还可以访问第二台服务器;对其任何URL的请求都会正确地将我重定向到其登录页面。只要我点击一个按钮,我就会收到一条会话过期的消息。从nginx访问日志中,单击按钮似乎会触发POST请求,该请求转到
/vaadinServlet/UIDL/?v-uiId=0
,并返回代码200(确定)

我认为请求应该真正转到
/second/vaadinServlet/UIDL/?v-uiId=0
。因此,我被困在登录页面上

我认为vaadinServlet请求指向错误URL的假设正确吗?如果是这样,我如何让它转到正确的位置


我正在考虑使用nginx从转诊URL提取必要的信息,但我相信应该可以配置Vaadin/Spring来处理此案例。

您找到解决此问题的方法了吗?恐怕没有,对不起。仅供参考:因为我想重新映射的服务是使用Spring boot和Vaadin构建的,我只需将
server.contextPath=/second
添加到应用程序配置中,然后在nginx中为location/second/I添加代理http://127.0.0.1:9002;