Назад | Перейти на главную страницу

Почему nginx выдает ошибку 404 при попытке доступа к статическим файлам на сервере FreeBSD?

У меня есть 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. (Возможно, и на других веб-серверах, но у меня есть опыт работы только с этими двумя.)