erro 403; não proxy: NginX e Node.js

3

Atualmente, tenho uma configuração em que todos os arquivos estáticos são atendidos pelo NginX e, se nenhum arquivo estático for encontrado, ele será movido para um servidor node.js. Infelizmente estou recebendo um erro 403 para o pedido de root. Todo o resto está funcionando bem.

server {
    listen *:80;
    error_page 404 = /404.html;
    root /web/sites/this.site.tld/static;
    index home;

    location / {
        try_files $uri $uri/ @proxy;
    }

    location @proxy {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_X_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://thisSiteApp;
        proxy_redirect off;
    }
}

upstream thisSiteApp{
    server 127.0.0.1:3000;
}

Tenho quase certeza de que o problema está na diretiva de indexação. Colocando um arquivo "index.html" em estático e alterando a diretiva para "index index.html" funciona. Mas o que eu realmente quero fazer é olhar para o servidor do nó para o local do índice, enquanto ainda está servindo meus arquivos estáticos sem olhar para o nó.

NB. Se eu colocar as configurações de proxy sob o / location o servidor do nó serve a raiz muito bem (bem sem os arquivos estáticos, mas serve bem a sua parte).

    
por Gauss 12.07.2013 / 14:31

2 respostas

4

Sua diretiva try_files tem uma barra, então o nginx tentará servir o diretório quando for para a raiz nua de example.org/ .

Em vez de:

location / {
    try_files $uri $uri/ @proxy;
}

use:

location / {
    try_files $uri @proxy;
}
    
por 18.06.2014 / 17:06
-1

Primeiramente, desculpe pelo meu péssimo inglês, acho que entendo seu problema. E você precisa pensar um pouco assim:

Defina seu conteto estático:

location ~ \.(jpg|png|etc)$ {

root  /web/sites/this.site.tld/static;
}

E então faça um proxy passar para o servidor js do seu nó

location / {
    proxy_pass http://127.0.0.1:3000;
  }

Ou seu método:  location / {         try_files $ uri $ uri / @proxy;     }

location @proxy {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_X_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://thisSiteApp;
    proxy_redirect off;
}

}

upstream thisSiteApp {

Ou algo assim.

    
por 12.07.2013 / 16:56