nginx - especifica um nome de arquivo de índice diferente para o subdiretório

3

Eu quero que o arquivo de índice de diretório na raiz do meu site seja index.html , mas dentro de um subdiretório /foo Eu quero que ele seja bar.html

ou seja,

  • /index.html
  • /foo/bar.html

Além disso, quero que as solicitações para /foo ou /foo/ ou /foo/:anything sejam resolvidas para bar.html

  • Por que meu bloco de localização / foo não funciona?
  • Como eu especifico o bloco de localização para / foo?

Aqui está a definição do servidor:

server {
  listen  80;
  server_name  domain.tld;
  port_in_redirect off;

  location / {
    # ssl is terminated at our load bal
    if ($http_x_forwarded_proto != 'https') {
      rewrite ^ https://$host$request_uri? permanent;
    }

    root   /usr/share/nginx/mysite/public;
    index  index.html;
    add_header Cache-Control "public max-age=600";
    add_header "X-UA-Compatible" "IE=Edge,chrome=1";
    charset UTF-8;
  }

  # this location doesn't work  <<<<<<<<<<<<<<
  location /foo {
    root  /usr/share/nginx/mysite/public/foo;
    index  bar.html;
  }

  # set expiration of assets to 30d for caching
  location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ {
    root   /usr/share/nginx/mysite/public;
    expires 30d;
    add_header Cache-Control "public";
    log_not_found off;
  }
}

EDIT: Eu também tinha o seguinte na parte inferior do bloco de servidor.

error_page  404              /404.html;
location = /404.html {
  root   /usr/share/nginx/www;
}

# redirect server error pages to the static page /50x.html
error_page   500 502 503 504  /50x.html;
location = /50x.html {
  root   /usr/share/nginx/www;
}
    
por Ade 19.05.2014 / 12:33

1 resposta

3

Para usar bar.html como arquivo de índice:

location /foo {
    index bar.html;
}

Se você quiser que qualquer solicitação para /foo/anything acabe em /foo/bar.html , use:

location = /foo {
    try_files /foo/bar.html =404;
}

location /foo/ {
    try_files /foo/bar.html =404;
}

No seu location , você tem a diretiva root incorreta.

Na sua configuração, o nginx acaba procurando pelo arquivo /usr/share/nginx/mysite/public/foo/foo/bar.html

    
por 19.05.2014 / 12:43

Tags