我需要在Nginx中的代理路径上执行重定向

我需要在Nginx中的代理路径上执行重定向,nginx,proxy,url-redirection,Nginx,Proxy,Url Redirection,我正在使用一个架构奇特的应用程序,我需要将它代理/重定向到一个子目录(除非有人能想出更好的解决方案)。以下是应用程序使用的路径布局: var securePaths = [ "/someaction", "/anotheraction", "/athirdaction", "/client/interfaceishere/index.html" //path to client interface ]; 正如您所看到的,客户端与应用程序接口的位置是两个级别,因此

我正在使用一个架构奇特的应用程序,我需要将它代理/重定向到一个子目录(除非有人能想出更好的解决方案)。以下是应用程序使用的路径布局:

var securePaths = [
    "/someaction",
    "/anotheraction",
    "/athirdaction",
    "/client/interfaceishere/index.html" //path to client interface
];
正如您所看到的,客户端与应用程序接口的位置是两个级别,因此我需要重定向到那里。我无法在那里代理应用程序,因为它需要访问顶级路径,如“/someaction”。我已将nginx配置为代理应用程序,如下所示:

upstream socket_nodes {
  ip_hash;
  server 127.0.0.1:8080;
}

server {
  server_name myapp.example.com;
  listen 80;


  location / {
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:8080;
  }
}
让用户访问“/client/interfaceishere/index.html”的最佳方式是什么


此应用程序的以前用户通过iframing解决了这个问题,iframing对我来说不是一个选项。

然后你需要将其拆分,位置块内的路径,而不是将所有内容与/一起传递。您确实需要首先思考并写下每条路径需要走到哪里,然后使用“地图”重定向或/和位置块处理事情。您可以使用位置块分别处理每个uri。

您可以使用location/path/。。。。。或者添加一个路径到proxy_pass,这取决于后端将看到什么,使用curl检查响应并检查日志文件以查看您的目的地。不起作用,是否可以设置通配符位置?比如:location/*我想我要问的是,我只希望一条路径被重定向(/),其他的一切都由代理处理。因此,代理的通配符路由和/的重定向将起作用,但我无法在通配符位置找到文档;不起作用?如果位置是/并且您请求“/client/interfaceishere/”,那么代理_pass应该在相同的路径(uri)上传递,当您请求“/client/interfaceishere/”时,日志文件会说什么?我刚刚检查了我的tomcat后端配置,它确实/在哪里传递了任何路径。。。但它将所有内容都代理到:127.0.0.1:8080/client/interfaces here,因此/someaction的路径实际上是这样传递的:127.0.0.1:8080/client/interfaces here/someaction,它应该是127.0.0.1:8080/someaction。