es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Nginx sirve archivos en una ubicación específica desde una carpeta específica.

Quiero que NGINX sirva archivos desde una ubicación dentro de un servidor.
Como ejemplo, me gustaría que la URL http://dominio/ss/image.png sirviera el archivo ubicado dentro de /home/data/screenshots/image.png

Hasta ahora, he intentado usar una expresión regular de esta manera:
conf
location ~ ^/ss/(.*) {
root /home/data/screenshots;
add_header content-type "image/png";
try_files $1 /$1;
}

sin embargo, parece que esta ubicación nunca se alcanza, ya que es manejada por la ubicación especificada en / (que en mi caso es una redirección).

No soy flexible con renombrar / cambiar la estructura de archivos del proyecto y quiero lograr este resultado solo con la modificación de configuración de NGINX.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para servir archivos desde una ubicación dentro de un servidor, se puede utilizar el siguiente bloque de configuración NGINX:

    server {
        listen       80;
        server_name  domain;
    
        location /ss {
            alias /home/data/screenshots;
            add_header Content-Type "image/png";
            try_files $uri =404;
        }
    }
    

    Explicación de la configuración:

    • listen especifica el puerto en el que escuchar.
    • server_name especifica el nombre del servidor a coincidir.
    • location especifica la ruta URL a coincidir.
    • alias especifica el sistema de archivos ruta para servir archivos desde.
    • add_header agrega un encabezado de respuesta.
    • try_files intenta servir el archivo solicitado, o devuelve un 404 si no se puede encontrar.

    Al establecer la location en /ss, se pueden coincidir URLs como http://domain/ss/image.png`. La directivaaliasespecifica la ruta del directorio para servir los archivos desde ella. La directivaadd_headeragrega el encabezadoContent-Typea la respuesta, estableciéndolo enimage/pngen este caso. La directivatry_files` intenta servir el archivo solicitado, cayendo en un error 404 si el archivo no se encuentra.

    Con esta configuración, NGINX debería poder servir archivos desde la ubicación especificada dentro del servidor.

Comments are closed.