nginx url 重定向,无文件路径

nginx url 重定向,无文件路径

我正在尝试设置 nginx,以便我设置的基于 Hadoop 的集群的名称节点能够根据 URL 上的文件扩展名有效地重定向到围绕 Hadoop 的不同用户界面。为简单起见,假设

firstnode.com 对应于我的集群的主节点
stormnode.com 对应于运行 storm 的节点,并且可以通过端口 8080 访问 UI。

那么,理想的重定向应该是http://firstnode.com/storm->http://stormnode.com:8080

我尝试编辑我的 Nginx 配置文件,最终得到如下内容:

server{
    listen 80;
    server_name firstnode.com;

    location /storm{
        proxy_pass secondnode.com:8080;
    }
}

server{
    listen 80;
    server_name firstnode.com;

    location /storm{
        return 301 $scheme://secondnode.com:8080$request_uri;
    }
}

以及使用正则表达式的等价语句。不幸的是,我得到的最接近的结果是将 firstnode.com/storm 重定向到 secondnode.com:8080/storm。我非常感谢任何关于如何通过 nginx 的配置文件重写 URL,而不将文件扩展名/路径(又名 /storm)传递给新的 URL

答案1

尝试这个:

server {
    listen 80;
    server_name firstnode.com;

    location ~ ^/storm(?<section>.*)$ {
        return 301 $scheme://secondnode.com:8080$section;
    }
}

这里我们将之后的部分捕获/storm到变量中section,然后在return语句中使用该变量来形成所需的路径。

相关内容