Nginx: Подавайте статичні файли з заданої директорії - занадто глибокий рівень


13

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

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

Я думаю, що існує спосіб використовувати правило Переписати для вирішення цієї ситуації, але я не дуже розумію всі частини, тому виникають певні труднощі при формулюванні цього правила.

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замість документа, про який ви згадували (див. "Коли місцеположення відповідає останній частині значення директиви")
Рафаель Ксав'є

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