2013-10-04 3 views
0

Я пытаюсь переписать GET / в /srv/app/static/index.html. Я рядом с этими несколькими директивами:Как nginx конструирует пути к файлу в блоке местоположения?

root /srv/app/static; 
location /static { 
    alias /srv/app/static; 
} 
location =/{ 
    alias /srv/app/static/index.html; 
} 

Так что, когда я GET /static, Nginx служит файл на /srv/app/static/index.html, и я счастлив.

Но, когда я GET /, nginx возвращает 404. Проверка журнала, я вижу, он пытается получить доступ к файлу /srv/app/static/index.htmlindex.html (sic). Почему он накладывает дополнительные index.html на путь, указанный в alias?

Если изменить эту директиву

location =/{ 
    index index.html; 
    alias /srv/app/static/; 
} 

журнал ошибок показывает, что он пытается получить доступ к /srv/app/stati (так, он удаляет окончательный c символ из /srv/app/static Что здесь происходит

Edit:.?

Я могу получить поведение, которое я хочу, используя rewrite следующим образом:

location =/{ 
    rewrite (.*) /static/index.html; 
} 

Но, я думаю, alias более совершенен и идиоматичен.

ответ

0

С тех пор как вы установили root, нет необходимости в alias.

Вы можете достичь того же результата с помощью только

location =/{ 
    index index.html; 
} 

Что касается ваших смешных вопросов, взгляд на documentation упоминает, что

В основном, это означает, что с

location =/{ 
    alias /srv/app/static/index.html; 
} 

Доступ к / на самом деле пытается получить доступ к /srv/app/static/index.htmlкак ужасный ctory. Я предполагаю, что nginx добавляет index.html как часть глобального nginx.conf.

Что касается вашего получения /srv/app/stati в журнале ошибок, я не совсем уверен, что происходит. Возможно, вы можете вставить полную запись в журнале?

Смежные вопросы