Назад | Перейти на главную страницу

перенаправление URL-адреса nginx без путей к файлам

Я пытаюсь настроить nginx, чтобы позволить узлу имени кластера на основе Hadoop, который я настроил, эффективно перенаправлять на различные пользовательские интерфейсы, окружающие Hadoop, на основе расширения файла в URL-адресе. Для простоты скажем, что

firstnode.com соответствует основному узлу моего кластера
stormnode.com соответствует узлу, на котором запущен шторм, а пользовательский интерфейс доступен через порт 8080.

Тогда идеальным перенаправлением было бы 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. Буду очень признателен за любой совет о том, как перепишите URL-адрес через файлы конфигурации nginx, не передавая расширение / путь файла (также известный как / storm) для нового URL-адреса.

Попробуй это:

server {
    listen 80;
    server_name firstnode.com;

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

Здесь мы фиксируем часть после /storm в section переменной, а затем используйте эту переменную в return заявление, чтобы сформировать желаемый путь.