NGINX reverse_proxy не передает ресурсы по правильному пути - PullRequest
0 голосов
/ 25 января 2020

У меня есть веб-сайт, и я хочу указать указанный c путь https://example.com/foo/ приложению (Rails), которое я размещаю на Heroku. Я смог успешно указать этот путь с помощью конфигурации NGINX ниже:

rewrite ^/foo$ /foo/ permanent;

location ~ ^/foo/(.*)$ {
  resolver 8.8.8.8;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_pass https://my-app-name.herokuapp.com/$1$is_args$args;
}

Однако все мои активы и пакеты javascript в моем приложении rails указывают на основной URL https://example.com/assets/123.css вместо https://example.com/foo/assets/123.css

Каков «лучший» способ исправить это? Должен ли я написать еще один proxy_pass для /assets/ и /packs/, как показано ниже, или есть более элегантное решение?

rewrite /assets$ /assets/ permanent;

location ~ /assets/(.*)$ {
  resolver 8.8.8.8;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_pass https://my-app-name.herokuapp.com/$1$is_args$args;
}

Любая помощь приветствуется

Обновление

Я полагаюсь на хостинговую компанию, которая вносит эти изменения в конфигурацию, и хочу исправить ее прямо перед запросом, в противном случае я бы просто протестировал ее сам.

Кроме того, я не надеваю не понимаю, нужны ли мне все proxy_set_header записи для запроса активов, и могу ли я просто получить proxy_pass https://my-app-name.herokuapp.com/$1$is_args$args;

...