Назад | Перейти на главную страницу

Nginx разделяет запросы на статические страницы и приложение rails

В настоящее время у нас есть nginx, сидящий перед нашими серверами приложений puma (обслуживающий приложения rails). Недавно мы разделили «маркетинговые» страницы на собственное репо и приложение.

По сути, у нас есть статический контент, обслуживаемый приложением, развернутым в netlify, но у нас есть приложение rails, которое берет на себя, как только пользователи входят в систему.

Любой совет, как его настроить? Значит, мы используем один домен для обоих? Изначально мы думали создать поддомен для статического контента, такого как (static.mydomain.com), и обслуживать все оттуда, но у этого подхода есть серьезные недостатки (домен и поддомен не имеют одинакового SEO).

Может ли nginx выполнить какое-то изменение URL-адреса, чтобы наше статическое приложение на netlify появилось в нашем домене? Или кто-нибудь по-другому решил эту проблему?

Обновить:

Я смог использовать предложение Джоша и в итоге получил следующее:

server {

...

расположение ^ ~ / about {proxy_set_header X-Forwarded-Server $ host; proxy_set_header X-Forwarded-For $ remote_addr; proxy_set_header X-Real-IP $ remote_addr; proxy_pass http://yourdeployment.netlify.com/about; }}

Однако теперь есть некоторые ресурсы (js / css / json), которые загружают netlify с roor url. http://yourdeployment.netlify.com/somescrip-someshavalue.sj что мой nginx начинает получать с mydomain.com.

Есть ли способ перехватить их, или мне нужно вручную добавить правила перенаправления, как в случае добавления блока местоположения для каждого из ресурсов?

Вы должны иметь возможность обслуживать приложение netlify на пути, если хотите, используя proxy_pass в nginx.

Такая конфигурация должна работать:

server {
  # ...
  location ^~ /about {
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Real-IP $remote_addr;
    # remove the preceding "/about/" from the URL
    rewrite ^/about/(.*) /$1 break;
    # pass it on to the netlify app
    proxy_pass http://yourdeployment.netlify.com;
  }
}

Путь может быть любым. Если вы хотите, чтобы использовался субдомен, вы должны настроить другой server {} блок с server_name сопоставление этого субдомена и location / {} с директивой прохождения прокси.