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

Nginx не находит подкаталоги, а также не запускает index.php в каталоге по умолчанию

Я перешел с Apache на Nginx, и теперь у меня проблемы.

  1. Когда я пытаюсь получить доступ к любой папке, например http://devserver/monitor/web где у меня есть проект Symfony, я получаю ошибку 404
  2. Когда я пытаюсь получить доступ к http://devserver Я получаю это сообщение все время File not found.

Вот как мой /etc/nginx/conf.d/default.conf файл выглядит так:

server {
    listen       80;
    server_name  devserver;

    location / {
        root   /var/www/html;
        index  index.php;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        fastcgi_params;
    }
}

Что там не так?

Вы разместили свой root директивы в неправильных местах.

root следует определить в server блок, а не в каждом location блок. Это один из наиболее распространенные неправильные конфигурации nginx.

Чтобы решить проблему, удалите все root директивы от каждого location блок и поместите правильный root директива в server блок, не внутри location.

Единственная причина иметь root в location блок - это когда вам действительно нужен другой корень документа для этого location, например, для обслуживания сообщений об ошибках nginx по умолчанию (как вы делаете здесь).