Eu tenho um aplicativo padrão do Rails implantado no Heroku. Eu estou usando buildpacks personalizados para instalar o nginx para que eu possa criar algumas regras de reescrita e um proxy reverso. Eu tenho principalmente trabalhando, salvo por um problema.
Eu tenho a seguinte definição location
para proxy passar todos os URLs começando com / blog / para outro aplicativo.
location ~* ^/blog/?(.*) {
set $forward_host 'another.app.com';
set $url_full '$1';
resolver 8.8.8.8 valid=300s;
resolver_timeout 10s;
# always add trailing slash
rewrite ^([^.]*[^/])$ $1/ permanent;
index index.html;
proxy_hide_header Set-Cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header Host $forward_host;
proxy_ignore_headers "Set-Cookie";
proxy_buffering off;
proxy_intercept_errors on;
proxy_redirect off;
proxy_pass http://$forward_host/$url_full;
}
Eu quero que todas as minhas URLs terminem com uma barra final, e é por isso que adicionei:
rewrite ^([^.]*[^/])$ $1/ permanent;
Tudo funciona bem quando eu clico:
http://nginx-playground.herokuapp.com/blog/
Mas quando eu não tenho a barra final e a regra de reescrita entra em ação, o proxy_pass adiciona o número da porta Heroku interna ao url e se parece com isso:
http://nginx-playground.herokuapp.com:27348/blog/
Eu tentei muitas coisas diferentes, como configurar proxy_redirect, mas não consegui descobrir.
Aqui está um link para o projeto do github do aplicativo de exemplo que eu configurei. Você pode bifurcar / clonar e tentar implantar no heroku para ver o que acontece por si mesmo.
Você precisará das seguintes variantes ENV se fizer:
BUILDPACK_URL: https://github.com/ddollar/heroku-buildpack-multi.git
LANG: en_US.UTF-8
RACK_ENV: production
Este é o artigo do blog que usei como ponto de partida: link
Qualquer ajuda ou pista seria muito apreciada.