Nginx: обслуживать статические файлы из заданного каталога - на один уровень слишком глубоко


13

Я довольно новичок в конфигах nginx. У меня возникли сложности с довольно простой проблемой. Я хотел бы разместить некоторые статические файлы в / doc (index.html, некоторые изображения и т. Д.). Файлы находятся в каталоге / sites / mysite / proj / doc /.

Проблема в том, что с помощью конфигурации nginx, представленной ниже, nginx пытается найти каталог с именем "/ sites / mysite / proj / doc / doc". Возможно, это можно исправить, установив root в / sites / mysite / proj /, но я не хочу потенциально выставлять другие (нестатические) ресурсы в каталоге proj /. И по разным причинам я не могу переместить каталог doc / из того места, где он находится.

Я думаю, что есть способ использовать правило переписывания для решения этой ситуации, но я не совсем понимаю все части, поэтому возникли некоторые трудности при формулировании правила.

rewrite ^/doc/(.*)$ /$1 permanent;

Я также включил рабочий пример размещения файлов из каталога / sites / mysite / htdocs / static /.

> vim locations.conf

location /static {
    root   /sites/mysite/htdocs/;
    access_log   off;
    autoindex  on;
}

location /doc {
    root   /sites/mysite/proj/doc/;
    access_log   on;
    autoindex  on;
}


2011/11/19 23:49:00 [error] 2314#0: *42 open() "/sites/mysite/proj/doc/doc" failed (2: No such file or directory), client: 100.100.100.100, server: , request: "GET /doc HTTP/1.1", host: "myhost.com"

У кого-нибудь есть какие-нибудь идеи, как я могу использовать этот статический контент?

Ответы:


20

Вы можете использовать псевдоним, вот так:

location /doc {
    alias   /sites/mysite/proj/doc/;
}

http://wiki.nginx.org/HttpCoreModule#alias


1
rootВместо этого лучше использовать в соответствии с документом, на который вы ссылались (см. «Когда местоположение соответствует последней части значения директивы»)
Рафаэль Ксавьер

обновленная ссылка на документ nginx.org/en/docs/http/ngx_http_core_module.html#alias
LucScu
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.