Nginx: archivo estático que sirve confusión con raíz y alias


1 Answers

decir como @treecoder

En el caso de la directiva root , la ruta completa se agrega a la raíz, incluida la parte de ubicación, mientras que en el caso de la directiva de alias , solo la parte de la ruta que NO incluye la parte de ubicación se agrega al alias.

Una imagen vale mas que mil palabras

para la root :

para alias :

Question

Necesito servir mi aplicación a través de mi servidor de aplicaciones en 8080 , y mis archivos estáticos de un directorio sin tocar el servidor de la aplicación. La configuración de nginx que tengo es algo como esto ...

    # app server on port 8080
    # nginx listens on port 8123
    server {
            listen          8123;
            access_log      off;

            location /static/ {
                    # root /var/www/app/static/;
                    alias /var/www/app/static/;
                    autoindex off;
            }


            location / {
                    proxy_pass              http://127.0.0.1:8080;
                    proxy_set_header        Host             $host;
                    proxy_set_header        X-Real-IP        $remote_addr;
                    proxy_set_header        X-Forwarded-For  $proxy_add_x_forwarded_for;
            }
    }

Ahora, con esta configuración, todo está funcionando bien. Tenga en cuenta que la directiva root está comentada.

Si activo root y desactivo el alias , deja de funcionar. Sin embargo, cuando elimino el final /static/ de la root , vuelve a funcionar.

¿Alguien puede explicar lo que está pasando? Además, explique de forma clara y detallada cuáles son las diferencias entre la root y el alias , y sus propósitos.




Solo una adición rápida a la respuesta muy útil de @ good_computer, quería reemplazar a la raíz de la URL con una carpeta, pero solo si coincidía con una subcarpeta que contenía archivos estáticos (que quería conservar como parte de la ruta).

Por ejemplo, si el archivo solicitado está en /app/js o /app/css , busque en /app/location/public/[that folder] .

Lo tengo para trabajar con una expresión regular.

 location ~ ^/app/((images/|stylesheets/|javascripts/).*)$ {
     alias /home/user/sites/app/public/$1;
     access_log off;
     expires max;
 }





Related



Tags

nginx