Я пытаюсь обслуживать статические файлы напрямую с таким блоком местоположения:
location /static/ {
alias /opt/graphite/webapp/content/;
}
Но когда я делаю запрос на соответствие / static /, я получаю ошибку 404 и такое сообщение в журнале ошибок:
2016/09/14 09:28:47 [error] 66068#0: *4 open() "/opt/graphite/webapp/content/js/completer.js" failed (2: No such file or directory), client: my.ip.add.ress, server: server.domain, request: "GET /static/js/completer.js HTTP/1.1", host: "server.ip", referrer: "http://server.ip/composer?"
Дело в том, что путь, указанный в этом сообщении об ошибке, полностью действителен. Этот файл существует. Он не требует отказа в разрешении, поэтому это не похоже на проблему с разрешениями. Местоположение, прокси-сервер для приложения, работает нормально. Я в недоумении, и все похожие сообщения, похоже, относятся к сокетам.
Запуск nginx 1.10.1 на OpenBSD 6.0.
Разобрался в этом. Распределение nginx в OpenBSD по умолчанию - chroot в /var/www/
, что запрещает доступ ко всей файловой системе за пределами этого раздела. Это можно обойти, запустив nginx напрямую с -u
флаг, или добавив тот же флаг к команде в /etc/rc.d/nginx
.
В качестве альтернативы, переместить все в chroot довольно просто, если вы знаете, что происходит.