【发布时间】:2017-04-24 05:17:30
【问题描述】:
我正在使用一个结构奇怪的应用程序,我需要代理 / 并将其重定向到子目录(除非有人能想出更好的解决方案)。以下是应用使用的路径布局:
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”的最佳方法是什么?
这个应用程序的以前用户通过 iframe 解决了这个问题,这对我来说不是一个选项。
【问题讨论】:
-
您可以使用 location /path/..... 或添加到 proxy_pass 的路径,这取决于后端将看到什么,使用 curl 检查响应并检查日志文件以查看您的位置去。
-
不起作用,我可以设置通配符位置吗?喜欢:位置/*
-
我想我要问的是我只想要一个重定向路径(/),其他一切都由代理处理。因此,代理的通配符路由和 / 的重定向可以工作,但我在通配符位置找不到文档。
-
so a proxy_pass 127.0.0.1:8080/client/interfaceishere;不工作?如果位置是 / 并且您询问“/client/interfaceishere/”,那么 proxy_pass 应该通过相同的路径 (uri),当您询问“/client/interfaceishere/”时日志文件会说什么?我刚刚检查了我的 tomcat 后端配置,它确实/在任何路径通过的地方。
-
这确实有效......但它将所有内容代理到: 127.0.0.1:8080/client/interfaceishere 所以 /someaction 的路径实际上像这样传递 127.0.0.1:8080/client/interfaceishere/ someaction 应该是 127.0.0.1:8080/someaction。
标签: nginx proxy url-redirection