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

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

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

firstnode.com соответствует главному узлу моего кластера
m пытается настроить 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-адрес .

0
задан 26 July 2016 в 23:27
1 ответ

Попробуйте следующее:

server {
    listen 80;
    server_name firstnode.com;

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

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

1
ответ дан 4 December 2019 в 16:33

Теги

Похожие вопросы