В моем приложении я хочу, чтобы местоположение "/" возвращало статический файл index.html, я хочу, чтобы "/ static" обслуживал статические файлы из папки, и я хочу, чтобы все другие запросы возвращали 404 НЕ НАЙДЕНО. Позже я собираюсь перенаправить все остальные запросы на сервер WSGI.
Это в настоящее время моя конфигурация:
# Dev server.
server {
listen 1337;
charset UTF-8;
location / {
rewrite ^ static/index_debug.html break;
}
location /static {
alias /home/tomas/projects/streamcore/static;
}
}
Статическая папка работает отлично, но "/" возвращает 404 НЕ НАЙДЕН. Я также попробовал:
alias /home/tomas/projects/streamcore/static/index_debug.html;
В блоке местоположения, но это возвращает 500 внутренняя ошибка сервера. Кажется, alias
что не любит отдельные файлы. Дополнительно я попробовал:
try_files static/index_debug.html;
Но это останавливает сервер от запуска с ошибкой «недопустимое количество аргументов в директиве try_files». По-видимому, на try_files
самом деле требует от вас попробовать более одного файла, а это не то поведение, которое я ищу.
Итак, мой вопрос: как я могу настроить блок местоположения так, чтобы он всегда возвращал статический файл?
РЕДАКТИРОВАТЬ: я видел из других ответов, которые alias
действительно должны принять один файл в качестве аргумента, поэтому я попытался:
location = / {
alias /home/tomas/projects/streamcore/static/index_debug.html;
}
Но я все еще получаю только 500 внутренняя ошибка сервера. Журнал ошибок для запроса "/" гласит:
[alert] 28112 # 0: * 7 "/home/tomas/projects/streamcore/static/index_debug.htmlindex.html" не является каталогом
Почему он пытается открыть "index_debug.htmlindex.html"? Я index
нигде не использую директиву.
источник
try_files static/index_debug.html static/index_debug.html;
location =/
я получаю 404 НЕ НАЙДЕН, аlocation /
я получаю ОШИБКУ ВНУТРЕННЕГО СЕРВЕРА 500.location / { return 404; }
location = / {Index /home/tomas/projects/streamcore/static/index_debug.html;}
Ответы:
Только что проверил это и у меня работает:
Файл
/tmp/root/static/index_debug.html
существует конечно :)Я могу нажать любой URL, и я просто получаю статическую страницу.
источник
Вы можете использовать try_files и перенаправить в именованное место с перезаписью. Как это:
Если файл существует в
/tmp/root
нем, он будет обслужен, в противном случае URI будет перезаписанstatic/index_debug.html
и будет обслужен.источник