Как легко объединить приложение Wordpress и Ruby on Rails на одном бэкэнде, одном домене, одном сервере

Read this article in:

Эта статья впервые опубликована 2023-07-05

Предположим, вы хотите обслуживать некоторые дорожки рельсами, а некоторые другие дорожки WordPress. Или вы хотите, чтобы приложение обслуживало страницы рельсов, если они доступны, и возвращалось на WordPress в противном случае.

Для SEO и, как правило, для хорошей структуры онлайн-ресурсов, возможно, вы хотите, чтобы приложения (мы будем называть их восходящими потоками) делились пространством имен. Другими словами, если вы являетесь категориями обслуживания, вы хотите, чтобы пути выглядели как /категории / чайники, /категории / кофе-маги, а не /блог / категории / чайники и /rails-приложение / категории / кофе-маги. Вопрос в том, каково техническое решение этой проблемы?

Мы будем использовать nginx для решения этой проблемы.

 восходящий бэкэнд {
сервер 192.2.0.1;
сервер 192.2.0.2;
...
?

Сервер {
...

местоположение / {
proxy pass http://backends;
proxy next upstream тайм-аут ошибки http 404;
?
?

где вышестоящие серверы - рельсы и WordPress, в таком порядке.

Давайте попробуем это на Localhost!

А для файлов на диске, возможно, статических активов, конфигурация выглядит следующим образом:

 местоположение / {
root/path/to/root;
try files $uri@fallback;
?

Местоположение @fallback {
proxy pass http:
?

Другим, менее предпочтительным и непроверенным решением будет:

 местоположение / {
Отправить 404s в B
error page 404 = @backendB
proxy intercept errors;
log not found off;

# Попробуйте прокси как обычно
proxy set header X-Forwarded-For $remote addr
прокси set header Хост $host;
proxy set header X-Real-IP $remote addr
proxy pass http://A;
?

Расположение @backendB {
Если А не сработало, попробуем Б.
proxy set header X-Forwarded-For $remote addr
прокси set header Хост $host;
proxy set header X-Real-IP $remote addr
proxy pass http://B;

Все 404 здесь обрабатываются нормально.
?
Please login to post comments: