Я построил свою веб-платформу на Ruby on Rails в https://example.com
Мой лендинг и страницы с информацией о них размещены в Wordpress на другом хосте по адресу https://examplecms.com.
Я хотел бы добиться, чтобы пользователи, посещающие https://example.com, получали маскировку https://examplecms.com, за исключением тех случаев, когда они вошли в систему, поскольку панель мониторинга моей платформы направляется по корневому пути /.
Чего я пытаюсь избежать, так это того, чтобы пользователь видел в URL-адресе https://examplecms.com.
Я пробовал пока пару уловок:
Я думал о том, чтобы сделать это на уровне прокси-сервера, используя .htaccess или даже используя стратегии DNS, но я не могу найти решение для этих стратегий, чтобы определить, когда пользователь вошел в систему или нет?
Любые идеи?
Спасибо
Обновлять: Куча:
Другой грубый способ сделать это - загрузить examplecms через javascript / jquery после того, как ваш сервер ответит информацией об авторизации. Что-то вроде $("body").load(" https://examplecms.com");
Вы пробовали nginx.org/en/docs/http/…? Это должно быть просто, если вы можете предоставить конечную точку для nginx для проверки аутентификации, а затем вы можете перенаправить клиента на основе того же
Были ли ответы на ваш вопрос? Если да, будьте любезны принять и / или присудить награду. Если вы не выполните никаких действий в течение 16 часов после льготного периода, по крайней мере половина суммы вознаграждения будет безвозвратно потеряна.





То, что вы ищете, - это объемы маршрутов. Я использую Devise для аутентификации, который предоставляет помощников для выполнения того, что вы хотите, но я не сомневаюсь, что вы можете приспособиться к своим потребностям. Когда пользователь попадает на любую страницу сайта, он автоматически перенаправляется на логин. Если они вошли в систему, они перенаправляются на домашнюю страницу / URL-адрес, который они ввели.
authenticated :user do
root to: 'titles#index'
end
devise_scope :user do
root to: 'devise/sessions#new'
end
Это не сработает, потому что мне нужно замаскировать другой URL-адрес внутри URL-адреса моего сайта, поэтому маршрутизация не покрывает это
Вы можете использовать http://nginx.org/r/proxy_pass, чтобы незаметно перенаправить пользователя на другую страницу, не изменяя URL-адрес, который отображается пользователю в поле Location браузера.
Чтобы проверить, вошел ли пользователь в систему, вы можете установить обработчик ошибок через http://nginx.org/r/error_page, чтобы перенаправить пользователя, только если ваша обычная страница возвращает ошибку (например, если обычный proxy_pass приводит к ответу 403 Forbidden, затем перенаправьте запрос пользователя на альтернативный proxy_pass в восходящем направлении согласно обработчику ошибок).
Я понимаю, что вы говорите. Вы думаете, что с некоторым регулярным выражением, которое указывает, что я нахожусь на домашнем пути (/), он должен отображать URL-адрес другого моего сайта.
Но это покрывает только половину. Если пользователь вошел в систему и запрашивает /, тогда он отобразит сайт, переданный через прокси, как указать, что директива передачи прокси игнорируется при входе в систему? Возможно я не понял часть обработчика ошибок
Что ж, это действительно должно быть решено в серверной части на стороне приложения; просто это также можно решить в nginx, поэтому мой ответ из-за того, что вы пометили тег Q w / nginx. :) Что касается обработки ошибок, ожидается, что серверная часть вернет код ошибки 403 только тогда, когда пользователь не аутентифицирован, что приведет к активации error_page (например, error_page =403 @nonauth;), который затем выполнит несвязанный proxy_pass, который скроет реальный URL (location @nonauth {proxy_pass http://...;}).
Для вашего веб-контента, размещенного на WordPress, вы можете создать очень простой поддомен у своего хостинг-провайдера, например, так
blog.example.com, который является псевдонимом examplecms.com
Вы можете использовать гем устройства для аутентификации пользователя и перенаправления пользователя на поддомен. Когда пользователь попадает в / root_path.
Да, это работает, но не соответствует описанным требованиям.
Если вы используете
nginx, у него есть опция для внутреннего перенаправления - nginx.com/resources/wiki/start/topics/examples/x-accel Я не использовал его для этого конкретного варианта использования. Постараюсь посмотреть, смогу ли я воссоздать то, что вам нравится, но вы должны попробовать, если у вас есть готовая установка