2012-10-09 25 views
41

Tengo varios conjuntos de archivos estáticos .html en mi servidor, y me gustaría usar nginx para que los sirva directamente. Por ejemplo, nginx debe servir a una URI de la siguiente distribución:Use nginx para servir archivos estáticos de subdirectorios de un directorio determinado

www.mysite.com/public/doc/foo/bar.html 

con el archivo .html que se encuentra en /home/www-data/mysite/public/doc/foo/bar.html. Puede pensar en foo como el nombre del conjunto y bar como el nombre del archivo aquí.

Me pregunto si el siguiente fragmento de configuración nginx haría el trabajo:

server { 
    listen  8080; 
    server_name www.mysite.com mysite.com; 
    error_log  /home/www-data/logs/nginx_www.error.log; 
    error_page 404 /404.html; 

    location /public/doc/ { 
     autoindex   on; 
     alias    /home/www-data/mysite/public/doc/; 
    } 

    location = /404.html { 
     alias    /home/www-data/mysite/static/html/404.html; 
    } 
} 

En otras palabras, todas las solicitudes del patrón /public/doc/.../....html van a ser manejados por nginx, y si cualquier URI dado no es encontrado, se devuelve un valor predeterminado www.mysite.com/404.html.

Respuesta

61

Se debe trabajar, sin embargo http://nginx.org/en/docs/http/ngx_http_core_module.html#alias dice:

Cuando ubicación coincide con la última parte del valor de la directiva: es mejor usar la directiva de la raíz en su lugar:

lo cual produciría:

server { 
    listen  8080; 
    server_name www.mysite.com mysite.com; 
    error_log  /home/www-data/logs/nginx_www.error.log; 
    error_page 404 /404.html; 

    location /public/doc/ { 
    autoindex on; 
    root /home/www-data/mysite; 
    } 

    location = /404.html { 
    root /home/www-data/mysite/static/html; 
    }  
} 
+0

gracias por la sugerencia! una pregunta, ¿necesito usar expresiones regulares como '^ (/ public/doc /)' aquí? O '/ public/doc /' está bien? – MLister

+0

just/public/doc/es suficiente en este caso, y en realidad un poco mejor ya que no tiene la (pequeña) carga adicional de la correspondencia de expresiones regulares – cobaco

Cuestiones relacionadas