web-dev-qa-db-fra.com

comment servir des fichiers html dans nginx sans afficher l'extension dans cette configuration d'alias

J'ai beaucoup de mal à configurer cet alias dans nginx pour afficher correctement mon site Web.

Le site Web qui m'intéresse devrait être accessible à partir de mywebsite.com/mr et est différent du site situé à mywebsite.com/. Le site Web est situé à /fullpath (raccourci pour simplifier) ​​Le site doit servir trois types de contenu:

  1. Le fichier d'index situé dans /fullpath/index.html.
  2. Autres fichiers html (sans afficher le .html extension dans le navigateur).
  3. Actifs statiques (js/css/img) situés dans /fullpath et sous-répertoires.

J'ai essayé de changer l'ordre des correspondances dans le try_files et a trouvé des situations où ils travaillaient tous, mais pas en même temps:

location /mr {
  default_type "text/html";
  alias /fullpath;

  # with this one 1 and 3 work
  # try_files $uri/index.html $uri.html $uri; 

  # with this one 2 and 3 work
  # try_files $uri $uri.html $uri/index.html;

  # with this one 1 and 2 work
  try_files $uri.html $uri/index.html $uri;
}

Quand on ne fonctionne pas, c'est 404. Est-ce que quelqu'un sait comment je peux servir correctement toutes sortes de fichiers?

20
askmike

Apparemment alias et try_files ne fonctionnent pas ensemble . Cependant, je ne pense pas que vous ayez besoin d'utiliser un alias.

location /mr {
  default_type "text/html";
  try_files  /fullpath/$uri /fullpath/$uri.html /fullpath/$uri/index.html  /fullpath/index.html;
}

Qui essaierait:

  • Fichier exact.
  • Fichier avec .html ajouté.
  • Index dans le chemin.
  • Index par défaut.

Je pense que la directive racine fonctionne avec les fichiers try mais je ne peux pas tester.

server{
    location /mr {

        root /home/mysite/fullpath;

        default_type "text/html";
        try_files  $uri $uri.html $uri/index.html index.html;
    }
}
27
Danack

J'ai utilisé un combo de ce que @Danack a publié qui m'a conduit au résultat que je cherchais (servir le fichier html directement):

location /health-check {
    default_type "text/html";
    alias /path/to/my/file.html;
}
6
Troy Grosfield