Редирект URL с помощью Proxypass в Rocky Linux

Вопрос или проблема

У меня есть сайт на VUE Nuxt с Nitro сервером, размещенным на Rocky Linux, который работает с PM2. Nitro сервер работает на порту 1344.

У меня есть один сайт foo.se, который имеет прокси-передачу на корневой каталог и работает отлично.

ProxyPass / http://127.0.0.1:1344/
ProxyPassReverse / http://127.0.0.1:1344/

Второй сайт bar.se настроен на прокси к подпапке

ProxyPass / http://127.0.0.1:1344/dekaler
ProxyPassReverse / http://127.0.0.1:1344/dekaler

При первом посещении он показывает правильный сайт для dekaler. Однако также изменяет URL на /dekaler напрямую без перезагрузки, так что он указывает на bar.se/dekaler. Если я перезагружаю, я перенаправляюсь на bar.se/dekaler/dekaler

Я пытаюсь выяснить, что вызывает это перенаправление. Это делает прокси-передача или, скорее всего, что-то в моем проекте nuxt?

Ответ или решение

Проблема, с которой вы столкнулись, связана с конфигурацией ProxyPass и внутренними маршрутами вашего Nuxt-приложения. Давайте разберем ваше окружение и то, что может вызывать некорректные редиректы.

Проблема

Первое, что стоит отметить, это то, что при проксировании на /dekaler, Nuxt-приложение, скорее всего, ожидает относительные маршруты, и когда пользователь переходит на /dekaler, ваше приложение может записать этот маршрут в URL, меняя его на bar.se/dekaler. При последующей перезагрузке браузер пытается получить страницу по адресу bar.se/dekaler/dekaler, что приводит к неправильному поведению.

Возможные решения

  1. Изменение конфигурации ProxyPass:
    Вам нужно изменить параметры ProxyPass и ProxyPassReverse, чтобы корректно обрабатывать префикс /dekaler. Вместо того, чтобы проксировать корень, вы можете проксировать с указанным префиксом.

    Пример конфигурации:

    ProxyPass /dekaler http://127.0.0.1:1344/dekaler
    ProxyPassReverse /dekaler http://127.0.0.1:1344/dekaler

    Это указывает, что все запросы к bar.se/dekaler должны проходить на сервер Nitro по тому же пути.

  2. Настройка маршрутизации в Nuxt:
    Убедитесь, что ваши маршруты в Nuxt не добавляют лишнего префикса при переходе. Вы можете настроить базовый URL в конфигурации Nuxt:

    export default {
     router: {
       base: '/dekaler/'
     }
    }

    Это заставит Nuxt правильно формировать относительные ссылки без добавления дополнительных путей.

  3. Проверка настроек CORS и редиректов:
    Убедитесь, что в Nuxt нет других редиректов, которые могли бы вмешиваться в ваше приложение. Проверьте конфигурации серверной и клиентской стороны, чтобы обеспечить целостность маршрутов.

Дополнительные рекомендации

  • Отладка: Используйте инструменты разработчика в вашем браузере для отслеживания сетевых запросов и окончательного редиректа. Это поможет лучше понять, на каком этапе происходит ошибка.
  • Логирование: Включите логирование в вашем приложении и сервере, чтобы увидеть, что именно происходит при переходе по URL.
  • Кеширование: Если на сервере работает кеширование, проверьте его настройки, так как это также может влиять на отображение и редиректы.

Заключение

Ваш вопрос указывает как на проблему конфигурации Apache с ProxyPass, так и на возможные проблемы с маршрутизацией внутри вашего Nuxt-приложения. Попробуйте внести предложенные изменения и проверяйте, ведет ли это к нужному результату. Если проблема все еще сохраняется, возможно, потребуется более глубокая проверка кода приложения.

Оцените материал
Добавить комментарий

Капча загружается...