Como posso lidar de forma ambidestra com diferentes hosts quando o Django está executando o Gunicorn atrás do Apache?

StackOverflow https://stackoverflow.com//questions/22081518

Pergunta

Eu tenho uma instalação do Django que gostaria de executar múltiplas variações do mesmo site:mesmos dados, conteúdo estático diferente, com o objetivo final de demonstrar XYZ conforme implementado com vários frameworks JavaScript.Eu gostaria que diferentes páginas iniciais fossem carregadas e que elas extraíssem seu próprio conteúdo estático distinto.(Todos os projetos pretendidos são SPAs.)

Eu tentei a solução em Como posso obter o nome de domínio do meu site dentro de um modelo Django?, mas no meu sistema o site atual não fornece o nome de host 'pragmatometer.com';ele fornece um nome de host 'localhost: 8000', porque Django/Gunicorn está servindo páginas como localhost.Tentei especificar em /etc/hosts que pragmatometer.com é 127.0.0.1 e ter proxy Apache para pragmatometer.com, mas isso resultou em um erro.Isso deixa em aberto a perspectiva de executar hosts separados em portas diferentes, que devem ter proxy como distintos, ou fazer com que a página inicial seja redirecionada para uma página de destino específica de URL, uma solução que sacrificaria o URL limpo de xyz.pragmatometer.com para demonstrar o Implementação da estrutura XYZ.Estou vendo várias maneiras de gravá-lo com JavaScript, apenas uma ou duas das quais eu gostaria que um futuro chefe visse...

O ideal seria que URLs raiz de vários (sub)domínios puxassem uma página inicial específica do subdomínio e o /load/*, /save/* etc.consistente entre eles.Eu também gostaria que o URL raiz extraísse seu próprio CSS e JavaScript, mas isso é bastante fácil se eu conseguir que o URL raiz funcione adequadamente.

A melhor solução que estou vendo até agora é ter processos de servidor separados escutando no mesmo IP, mas ter servidores isomórficos rodando em portas diferentes e proxy por diferentes Apache VirtualHosts.Ou isso ou fazer com que o JavaScript detecte o URL e substitua a página pelo índice "real" do domínio, que tem um cheiro um pouco estranho.

Comentários sobre uma solução melhor ou como executar bem a intenção acima?

--EDITAR--

Ou outra abordagem que pode ser um pouco mais limpa:

Tenha uma imagem inicial que carregue o conteúdo de /framework/ para cada estrutura e, em seguida, document.write() depois a página é carregada o suficiente para que document.write() destrua o conteúdo da página existente.

Se eu usasse o jQuery para destruir e carregar uma página dessa maneira, isso deixaria para trás alguma poluição que interferiria no funcionamento adequado das estruturas?

Foi útil?

Solução

Sua pilha parece meio maluca.

Você quer um servidor web com Django que pode ser acessado por múltiplo domínios.Cada domínio faz com que o aplicativo Django sirva conteúdo diferente.Eu entendi você corretamente?

Se sim, talvez você tenha sucesso ao substituir o Apache pelo Nginx.Ele pode resolver o nome do host solicitante e decidir como redirecionar a solicitação:

Qual é a diferença entre $host e $http_host no Nginx

Hospedagem de vários domínios com um projeto Django

Atualizar

Documentação relevante do nginx para distinguir entre diferentes nomes de host:http://nginx.org/en/docs/http/request_processing.html http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name

Documentação relevante do nginx para adicionar cabeçalhos de solicitação:http://nginx.org/en/docs/http/ngx_http_headers_module.html#add_header

Veja também esta resposta:Adicionando e usando cabeçalho (HTTP) no nginx

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top