У меня есть nginx 1.8.1 на сервере с FreeBSD 10.2. Я пытаюсь обслуживать файлы из подкаталога /usr/local/www/
(что по умолчанию во FreeBSD), но по какой-то причине запросы к файлам, к которым я пытаюсь получить доступ, всегда приводят к ошибке 404.
В частности, файл /usr/local/www/example.com/pubic_html/index.html
, с участием /usr/local/www
рекурсивно принадлежит www:www
, пользователь и группа рабочего процесса nginx с повторно установленными разрешениями 755
.
Мой server
блок, в /usr/local/etc/nginx/sites-available/example.com
:
server {
listen 80 default;
server_name example.com www.example.com;
root /usr/local/www/example.com/public_html;
location /app {
proxy_pass http://localhost:8080;
}
location / {
try_files $uri =404;
}
}
Я честно озадачен этим. У меня не было этой проблемы в Linux с Nginx или Apache, и у меня раньше не было этой проблемы при работе с Apache на FreeBSD. Как я могу заставить nginx обслуживать этот статический файл?
РЕДАКТИРОВАТЬ: в то время как запросы на статические файлы не приводят к тому, что в моем nginx-error.log
, это приводит к нормальным 404 записям попаданий в nginx-access.log
.
У вас есть другие файлы конфигурации для Nginx?
Я думаю у тебя есть listen <ip>
директиву в другом месте, поэтому вы также должны использовать listen <ip> default_server
или listen <ip>:80 default_server
в твоем example.com
конфигурация.
Хорошо, вот в чем дело: конфигурации по умолчанию для веб-серверов во FreeBSD НЕ используют файлы внутри sites-available
каталог. Либо вы должны поместить содержимое файлов внутрь /usr/local/etc/nginx/nginx.conf
или добавьте эту строку в /usr/local/etc/nginx/nginx.conf
так что он будет читать файлы внутри sites-available
каталог:
# virtual hosting
include /usr/local/etc/nginx/sites-available/*.conf;
То же самое относится и к Apache во FreeBSD. (Возможно, и на других веб-серверах, но у меня есть опыт работы только с этими двумя.)