Proxy reverso Nginx para outro servidor nginx que serve arquivos estáticos

4

Eu tenho um servidor Nginx que hospeda um aplicativo da web que funciona bem quando acessado diretamente. Sua configuração está abaixo

server {
    listen 8000 default_server;

    listen [::]:8000 default_server ipv6only=on;

    root /data/www/ ;
    server_name server1.com;

    location / {
            try_files $uri $uri/ =404;
        }

    location /app/ {

    }   
}

Agora eu tenho que servir este aplicativo de outro servidor Nginx Então eu configurar o proxy reverso, como abaixo

server {
        listen 80 default_server;

        listen [::]:80 default_server ipv6only=on;

        root /data/www/ ;
        server_name server2.com;

        location / {
                try_files $uri $uri/ =404;
            }

        location /app/ {
                proxy_pass http://server1.com:8000/app/;
        }   

Quando eu acesso o aplicativo do server2, estou recebendo erros como abaixo, por exemplo, quando estou acessando o link ( desculpe nenhum representante para postar links)

[error] 6601#0: *1 open() "/data/www/app/css/app.css" failed (2: No such file or directory)

e sem erros nos logs do servidor1. Por que o nginx está procurando por arquivos estáticos no server2 quando eu o configurei para inverter o proxy para server1 mesma configuração funciona bem no apache com

ProxyPass /app/ http:server1:8000/app/

ProxyPassReverse /app/ http:server1:8000/app/

O que eu sinto falta?

    
por sanre6 05.06.2014 / 07:35

3 respostas

1

O problema é sua segunda instância do nginx que está tentando veicular arquivos localmente:

   location / {
           try_files $uri $uri/ =404;
      }

Basta remover tudo isso se quiser veicular usando o link . Se você quiser usar o link , atualize a configuração para refletir isso:

  listen [::]:80 default_server ipv6only=on;

   server_name server2.com;

   location / {
          proxy_pass http://server1.com:8000/app/;
  }  
    
por 28.06.2016 / 03:35
0

Tente colocar o local mais específico de /app/ em seu proxy antes / acima do local mais genérico de / , pois o nginx pode estar lidando com as regras de local da maneira que você não pretendia.

    
por 05.06.2014 / 07:51
0

Você geralmente não precisa adicionar o caminho para o nginx!

O caminho do local é adicionado automaticamente

então isso

location /app/ {
      proxy_pass http://server1.com:8000/app/;
}

deve ser realmente:

 location /app/ {
      proxy_pass http://server1.com:8000;
}
    
por 15.06.2014 / 23:31