Este artigo foi publicado pela primeira vez em 2023-07-05
Suponha que você queira servir alguns caminhos com trilhos, e alguns outros caminhos com wordpress. ou você quer que o aplicativo para servir rails páginas se eles estão disponíveis, e voltar no wordpress caso contrário.
Para SEO e geralmente ter uma boa estrutura de recursos online, talvez você queira que os aplicativos (vamos chamá-los de upstreams) compartilhem o espaço de nomes. Em outras palavras, se você é categorias de serviços, você quer que os caminhos se pareçam com /categorias/tea-kettles, /categories/caffee-mugs ao invés de /blog/categories/tea-kettles e /rails-app/categories/caffee-mugs. A questão é, então, qual é a solução técnica para este desafio?
Vamos usar Nginx para resolver este problema.
Infra-estruturas a montante {
servidor 192.0.1;
servidor 192.2.02;
...
}
servidor {
...
localização / {
proxy pass http://backends;
Tempo limite de erro proxy next upstream http 404;
}
}
onde os servidores a montante são trilhos e wordpress, nessa ordem.
Vamos tentar no anfitrião local!
E para arquivos no disco, talvez ativos estáticos, a configuração é a seguinte:
localização / {
raiz/caminho/para/raiz;
try files $uri @fallback;
}
local @fallback {
proxy pass http://...
}
Outra solução menos preferível e não testada seria:
localização / {
Envie 404s para B
error page 404 = @backendB;
proxy intercept errors ligado;
log not encontrado;
Tente o proxy como normal
proxy set header X-Forwarded- Para $remote addr;
proxy set header Máquina $host;
proxy set header X- Real-IP $remote addr;
proxy pass http://A;
}
localização @backendB {
Se A não funcionou, vamos tentar B.
proxy set header X-Forwarded- Para $remote addr;
proxy set header Máquina $host;
proxy set header X- Real-IP $remote addr;
proxy pass http://B;
# Qualquer 404 aqui são manuseados normalmente.
}