Вопрос или проблема
У меня есть сайт на 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
, что приводит к неправильному поведению.
Возможные решения
-
Изменение конфигурации 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 по тому же пути. -
Настройка маршрутизации в Nuxt:
Убедитесь, что ваши маршруты в Nuxt не добавляют лишнего префикса при переходе. Вы можете настроить базовый URL в конфигурации Nuxt:export default { router: { base: '/dekaler/' } }
Это заставит Nuxt правильно формировать относительные ссылки без добавления дополнительных путей.
-
Проверка настроек CORS и редиректов:
Убедитесь, что в Nuxt нет других редиректов, которые могли бы вмешиваться в ваше приложение. Проверьте конфигурации серверной и клиентской стороны, чтобы обеспечить целостность маршрутов.
Дополнительные рекомендации
- Отладка: Используйте инструменты разработчика в вашем браузере для отслеживания сетевых запросов и окончательного редиректа. Это поможет лучше понять, на каком этапе происходит ошибка.
- Логирование: Включите логирование в вашем приложении и сервере, чтобы увидеть, что именно происходит при переходе по URL.
- Кеширование: Если на сервере работает кеширование, проверьте его настройки, так как это также может влиять на отображение и редиректы.
Заключение
Ваш вопрос указывает как на проблему конфигурации Apache с ProxyPass
, так и на возможные проблемы с маршрутизацией внутри вашего Nuxt-приложения. Попробуйте внести предложенные изменения и проверяйте, ведет ли это к нужному результату. Если проблема все еще сохраняется, возможно, потребуется более глубокая проверка кода приложения.