2013-03-16 1 views
14

Ho molti problemi nell'impostare questo alias in nginx per visualizzare correttamente il mio sito web.come utilizzare i file html in nginx senza mostrare l'estensione in questa configurazione alias

Il sito Web di cui sono interessato dovrebbe essere accessibile da mywebsite.com/mr ed è diverso dal sito situato a mywebsite.com/. Il sito si trova a /fullpath (abbreviato per semplicità) Il sito deve servire tre tipi di contenuti:

  1. Il file di indice si trova nella /fullpath/index.html.
  2. Altri file html (senza mostrare l'estensione .html nel browser).
  3. Risorse statiche (js/css/img) situate in /fullpath e sottodirectory.

Ho provato a cambiare intorno l'ordine delle partite in try_files e ho trovato situazioni in cui tutti hanno lavorato, non solo allo stesso tempo:

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; 
} 

Quando uno non funziona, 404 di. Qualcuno sa come posso servire correttamente tutti i tipi di file?

risposta

19

Apparentemente alias e try_files don't work together. Tuttavia, non penso che sia necessario utilizzare alias.

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

Il che avrebbe cercato:

  • file esatto.
  • File con .html aggiunto.
  • Indice nel percorso.
  • Indice predefinito.

Penso che la direttiva root funzioni con i file di prova ma non riesca a testare.

server{ 
    location /mr { 

     root /home/mysite/fullpath; 

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

ho usato una combinazione di ciò che @Danack postato che mi ha portato al risultato che cercavo (servire il file html direttamente):

location /health-check { 
    default_type "text/html"; 
    alias /path/to/my/file.html; 
} 
+1

Grazie. Funziona perfettamente. –