ignorando a função raiz em um enlace de proxy

1

Meu subdomínio sbd.example.org é um serviço da Web que precisa retornar uma página HTML estática quando a solicitação é GET para a raiz ( / ), e é uma reescrita de proxy para qualquer outro caso (por exemplo, /t ). Então eu preciso de

  • GET http://sbd.example.org ao índice root usual e try_files
  • GET http://sbd.example.org/t reescreva para um proxy

mas meu /etc/nginx/sites-available/sbd não está funcionando como esperado. Esta é a fonte problemática:

server {

       server_name sbd.example.org;

       root /var/www/sbd/html;

       index index.html index.htm;

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

       location ~ ^/[a-z].+$ {
          rewrite ^/(.*)$ /$1 break;
          proxy_pass  http://127.0.0.1:3000;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          default_type  application/json;
          proxy_hide_header Content-Location;
          proxy_set_header  Connection "";
          proxy_http_version 1.1;
       }

}

Erro : o GET http://sbd.example.org/ não é uma página HTML, mas um JSON com mensagem de erro gerada por proxy como uma solicitação para http://sbd.example.org/index.htm .

Como corrigir meu script Nginx?

PS: todo o http://sbd.example.org/etc está funcionando bem.

    
por Peter Krauss 21.02.2017 / 10:41

1 resposta

1

Em vez de identificar o que precisa ser enviado ao proxy, pode ser mais fácil identificar quais arquivos são estáticos.

location / {
    try_files $uri $uri/ @proxy;
}
location @proxy {
    proxy_pass  http://127.0.0.1:3000;
    ...
}

Veja este documento para saber mais.

    
por 21.02.2017 / 11:04

Tags