NGINX carrega o DOM, mas retorna 502 para imagens e ativos

1

Estou criando uma página 50x.html personalizada, mas não consigo carregar os recursos do meu diretório usr/share/nginx/html . Eu acho que o problema está nas configurações de upstream do proxy reverso do meu aplicativo. Como faço para me livrar do upstream: "http://127.0.0.1:1234" apenas ao servir o meu arquivo estático nginx de usr/share/nginx/html (ou seja, quando o proxy reverso está inativo), mas em todas as outras configurações use o upstream (como como minha configuração já está configurada agora )?

Registro de erros do Nginx:

2016/07/22 16:10:06 [error] 24000#0: *94 connect() failed (111: Connection refused) while connecting to upstream, client: <<client-ip-here>>, server: foo.com, request: "GET /img-1024.png HTTP/1.1", upstream: "http://127.0.0.1:1234/img-1024.png", host: "foo.com", referrer: "https://foo.com/logo.png"

nginx.conf:

upstream api {
    server 127.0.0.1:1234;
}

...

error_page 501 502 503 /500.html;

location = /500.html {
    root /usr/share/nginx/html;
}

...

Eu tentei usar try_files: try_files $uri $uri/ ou em alguma variação sem sucesso.

Obrigado

    
por Bryan 22.07.2016 / 22:45

2 respostas

2

Uma abordagem é fornecer arquivos estáticos no front-end e somente proxy, se eles não existirem. Você pode implantar suas páginas de erro e recursos neste servidor. Evite conflitos de diretório entre as partes frontal e traseira.

Por exemplo:

root /usr/share/nginx/html;

location / {
    try_files $uri @proxy;
}

location @proxy {
    proxy_pass http://api;
}

Veja este documento para detalhes.

    
por 22.07.2016 / 23:04
2

Você está certo - o nginx não consegue distinguir uma solicitação para os recursos da página de erro das solicitações normais.

Você deve alterar os recursos para usar um caminho exclusivo no qual você pode fazer correspondência de local (talvez algo como /500/logo.png ) ou usar um serviço externo para hospedar os ativos (S3 ou semelhantes) e carregá-lo de lá.

Para a correspondência de local, provavelmente seria algo como

location /500 {
    root /usr/share/nginx/html;
}
    
por 22.07.2016 / 22:56

Tags