Como enviar solicitações para um servidor interno usando o nginx?

3

Eu configurei um servidor web para visualizar meus repositórios (uma instância de Gitalist) no link e eu quero configurar um proxy usando nginx.

Eu quero que a solicitação seja intermediada por proxy para minha visualização do repositório ao receber um URI como DOMAIN / git /.

Minha configuração atual do nginx foi declarada da seguinte forma:

location /git {
    proxy_pass http://localhost:3000/;
}

As solicitações são enviadas ao servidor, mas nenhuma das imagens / links ou CSS pode ser resolvida, pois eles apontam para " link "por exemplo.

EDITAR

Se eu proxy_pass para o endereço real do servidor, ele funciona:

 location /git {
        proxy_pass              http://192.168.1.111:3000/;
 }

Mas deve haver uma maneira de ocultar o endereço real dos servidores durante o proxy.

    
por eliocs 05.03.2012 / 12:46

5 respostas

2

No caso de os URIs serem absolutos, uma solução poderia estar usando o HTTPSubModule do Nginx ou alternando para o Apache com seu mod_proxy_html módulo. Ambos são capazes de modificar a resposta recebida dos servidores de backend e fazer algumas substituições.

    
por 09.03.2012 / 11:52
4

Experimente a solução apresentada no wiki nginx:

link

o resultado, deve ser algo assim.

location /git {
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass              http://192.168.1.111:3000/;
}
    
por 05.03.2012 / 19:39
0

Os caminhos não estão sendo intermediados por proxy. Veja este link:

link

    
por 05.03.2012 / 13:30
0

Se um aplicativo produz HTML com caminhos absolutos para gráficos / scripts / páginas e solicitações de navegador - nem o aplicativo nem o navegador sabem que você está tentando ocultar o aplicativo em /git caminho, então o navegador tentará carregá-los seus caminhos absolutos. A ideia toda funcionaria se o Nginx pudesse reescrever o HTML, mas não poderia.

    
por 05.03.2012 / 20:36
0

Se você estiver gerando links absolutos usando o cabeçalho do host enviado na solicitação, , deverá definir o Nginx para definir que para o valor do cabeçalho Host original, adicionando:

proxy_set_header Host $http_host;

para o bloco de localização.

    
por 19.03.2013 / 16:34