Подтвердить что ты не робот

Используйте nginx для обслуживания статических файлов из подкаталогов заданного каталога

У меня есть несколько наборов статических файлов .html на моем сервере, и я бы хотел использовать nginx для их непосредственного обслуживания. Например, nginx должен обслуживать URI следующего шаблона:

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

с файлом .html, который находится в /home/www-data/mysite/public/doc/foo/bar.html. Вы можете думать о foo как имя набора и bar в качестве имени файла здесь.

Интересно, выполнит ли следующая часть конфигурации nginx:

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

Другими словами, все запросы шаблона /public/doc/.../....html будут обрабатываться nginx, и если какой-либо данный URI не найден, возвращается значение по умолчанию www.mysite.com/404.html.

4b9b3361

Ответ 1

Он должен работать, однако http://nginx.org/en/docs/http/ngx_http_core_module.html#alias говорит:

Когда местоположение совпадает с последней частью значения директив:   вместо этого лучше использовать корневую директиву:

который даст:

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