Node.js Express NGINX: caminhos de arquivos estáticos quebram com proxy_pass com nome espaçado

1

Então, eu estava acessando meu servidor em domain.com:3333 , mas apenas o alterei para domain.com/nodeapp usando upstream e proxy pass na configuração nginx. O redirecionamento funciona muito bem, mas agora os links para arquivos estáticos que estão sendo usados meu index.html (/styles/style.css & socket.io/socket.io.ks) estão quebrados e tudo o que é exibido é html bruto.

De index.js

app.get('/nodeapp', function(req,res){
 res.sendFile(path.join(__dirname, '/views', 'index.html'));
});

app.use('/styles', express.static(path.join(__dirname, '/views/styles')));

De index.html

<link rel="stylesheet" type="text/css" href="styles/style.css">
<script src="socket.io/socket.io.js"></script>

De ... / nginx / sites-enabled / default

upstream nodeapp{
  server localhost:3333 fail_timeout=0;
}

server{
....

    location /nodeapp{
      proxy_pass http://nodeapp;
    }

....
}

Como posso restabelecer o link?

Observe que no meu index.js antes do switch, a primeira linha mostrada foi app.get('/', function(req,res){

    
por AllTheTime 11.10.2014 / 01:50

2 respostas

1

Então, isso foi meio difícil de entender, mas dolorosamente simples.

location /socket.io {
    proxy_pass http://nodeapp;
}

location /styles {
    proxy_pass http://nodeapp;
}

Os caminhos para os quais links index.html devem ser definidos como locais no conf nginx que prox_pass para o servidor do nó.

    
por 12.10.2014 / 01:46
0

Adicione uma barra ao seu local e ao destino proxy_pass e deixe seu index.js original intacto. Seus links devem apontar para / nodeapp / {something} em index.html.

location /nodeapp/ {
    proxy_pass http://nodeapp/;
}
    
por 11.10.2014 / 13:28

Tags