Недавно я обнаружил, что пока я указываю полный путь, мой веб-сервер будет обслуживать любой файл в моей файловой системе, для которого у него есть права чтения. Другими словами, что-то вроде
http://www.example.com/Users/john/Desktop/Costa%20Rica/DSC_0058.jpg
будут с радостью обслужены веб-сервером. Это несмотря каждый DocumentRoot
настройка, указывающая только на /Library/WebServer/Documents
.
Почему Apache обслуживает всю файловую систему? Можно его выключить?
Попробуйте найти <Directory />
раздел и убедитесь, что любые настройки в этом теге являются ограничительными.
Также проверьте, включен ли и настроен ли mod_userdir. Ищите такие теги, как UserDir
Я до сих пор не понимаю, чем это вызвано.
Я обнаружил, что он обслуживает только файлы из /Users/john
а не остальная часть файловой системы (кроме правильного корня документа для сервера), поэтому я предполагаю, что это что-то связано с каким-то умным обменом файлами OS X чем-то.
Я проверил mod_userdir
, который не был включен. Я проверил все Directory
и Location
разделы, никто из которых, похоже, разрешает доступ к файлам в /Users/john
. Ничего в конфигурации не упоминается john
в частности, и я не могу найти никакого регулярного выражения, которое бы соответствовало этому. Кажется, это не связано с расширением файла (было бы разумно «обслуживать все изображения» или что-то в этом роде, но это тоже было не так).
Итак, через много часов я закончил добавление <Location /Users>
раздел в мой глобальный httpd.conf
где я отключил доступ для всех, вот так:
<Location "/Users">
Order Deny,Allow
Deny from all
</Location>
(Это именно то, что я <Directory />
раздел тоже выглядит, для протокола.)
Это не лучшее решение, но похоже, что оно запрещает доступ к файлам, которые не должны обслуживаться.
Поскольку у меня это сработало, я приму это как ответ. Я благодарен за помощь, оказанную мне Safado, и если кто-нибудь еще придет в будущем и будет иметь какие-либо подсказки, пожалуйста, опубликуйте их! Скорее всего, этот сервер будет эксплуатироваться, по крайней мере, какое-то время дольше, и я был бы рад попробовать более подходящее решение, если оно существует.
Users -> /Users
в корне документа (я ранее исключал это, потому что он не обслуживал каталоги пользователей, кроме john
). Я предполагаю, может быть, по какой-то причине www-data
пользователь, который запускает Apache, имеет права файловой системы на чтение /Users/john
но не другие каталоги внутри /Users
, но в любом случае удаление символической ссылки решило мою проблему.