403 Запрещено обслуживать статические файлы из общей папки VirtualBox с помощью nginx (гостевая Ubuntu 10.04LTS, хост Windows 7)
Я работаю над локальной ВМ для разработки и пытаюсь проверить работу моего сайта с gunicorn и nginx в качестве обратного прокси-сервера только для статических ресурсов. Сайт загружает минус статические ресурсы user nginx;
в nginx.conf. Попытка загрузить статический ресурс по отдельности выявляет ошибку 403 Forbidden.
Для фона. Статические ресурсы находятся в общей папке в /media/sf_work
, Все файлы принадлежат root:vboxsf
(VirtualBox по умолчанию). Моя учетная запись пользователя в системе была добавлена в vboxsf
группа, и у меня есть полный доступ к общей папке.
Для сравнения я попытался изменить пользователя nginx.conf на мою учетную запись. В этом случае статические файлы загрузились, но сама домашняя страница выдает ошибку 403 Forbidden. Итак, я попытался добавить nginx
пользователь к vboxsf
группа, но тогда все выдает 403 Запрещенную ошибку. После дальнейшего исследования кажется, что если пользователь nginx.conf входит в какую-либо группу, это приводит к 403 Запрещено.
Есть идеи, что здесь может происходить?
ОБНОВИТЬ
Итак, проблема с возвратом 403 главной страницы при использовании моей учетной записи пользователя в качестве пользователя nginx (единственный способ работы статических файлов) связана с отсутствием файла index.html в каталоге (список каталогов запрещен). Однако я, очевидно, не хочу, чтобы он перечислял каталог; он должен передать этот запрос доверенному лицу. Я использую следующее:
location / {
try_files $uri $uri/ @proxy
}
location @proxy {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://127.0.0.1:8080;
}
Что-то не так с этим?
1 ответ
Итак, я наконец-то решил это. Во-первых, пользователь nginx.conf должен иметь доступ к общей папке, что означает, что мне пришлось использовать свою учетную запись. Я не доволен этим, но это всего лишь блок разработки, поэтому безопасность на самом деле не является проблемой.
Тогда была проблема с моим try_files
директивы. Оглядываясь назад, это имеет смысл. Я прошу /
и этот каталог действительно существует, но я не хочу, чтобы это совпадение. Так что мне действительно нужно было:
try_files $uri @proxy
Тогда все работало нормально.