Nginx дает ошибку 403 для файлов CSS/JS

у меня есть настройка nginx 0.7.67 на Ubuntu10.10 вместе с php-cli . Я пытаюсь запустить PHP-фреймворк на основе фронтального контроллера, но все страницы, кроме index.php дает ошибку 403.

Ex:

  1. http://mysite.com/styles/style.css - 403 запрещено
  2. http://mysite.com/scripts/script.css - 403 запрещено
  3. http://mysite.com/index.php - работает

мой /etc/nginx/sites-включено / по умолчанию следующим образом

server {
    listen          80;
    server_name     mysite.com;

    access_log      /var/log/nginx/access.log;
    error_log       /var/log/nginx/error.log warn;

    index           index.php index.html;
    root        /full/path/to/public_html;

    location ~* .(js|css|png|jpg|jpeg|gif|ico|html)$ {
            expires max;
    }


    location ~ index.php {
            include     /etc/nginx/fastcgi_params;
            keepalive_timeout 0;
            fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_pass    127.0.0.1:9000;
    }

}

любые предложения о том, как исправить выше?

PS: Это запись из журнала ошибок

2010/10/14 19:56:15 [error] 3284#0: *1 open() "/full/path/to/public_html/styles/style.css" 
failed (13: Permission denied), client: 127.0.0.2, server: quickstart.local, 
request: "GET /styles/style.css HTTP/1.1", host: "mysite"

6 ответов


была та же проблема. Исправлено, просто установив правильные разрешения на мои файлы и папки CSS и JS. Будьте осторожны с настройкой разрешений! Но для того, чтобы файл был читаемым в интернете, он должен быть читаемым пользователем, выполняющим серверный процесс.

chmod -R +rx css
chmod -R +rx js

дает разрешения на чтение и выполнение. The -R для рекурсивных. Только сделать это для файлов, которые вы хотите, читаемый миром!


Alt решение: измените пользователя запуска, отредактировав nginx.конф (например, /usr/местные/nginx в/конф/с nginx.conf) владельцу этих файлов:

user myuser mygroup;

попробуйте это в вашем расположении:

location ~* ^.+\.(js|css|png|jpg|jpeg|gif|ico|html)$ {

или

location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|html)$ {

Мне нужно написать альтернативное решение этой проблемы. Перенести wordpress на сервер Plesk и я получаю эту ошибку с помощью CSS и JS скриптов. Конфигурация Nginx создает ошибку при получении файлов JS и css. Если wordpress ошибка загрузки CSS и js скрипты (запрещено), это может быть связано с конфигурацией nginx и apache.

откройте окно конфигурации nginx и apache:

интеллектуальная обработка статических файлов - > DONT CHECKED

Это решает мою проблема. Я надеюсь, что другие тоже pymessoft.com


убедитесь, что каждый каталог верхнего уровня имеет уровни разрешений и индекс.формат html. В большинстве случаев вы просто скопируете файл, который хотите увидеть в /www, и переименуете его в индекс.html убедитесь, что новый индекс.html имеет правильные разрешения (чтобы быть уверенным 777 только для тестирования курса).


    server {
        listen          80;
        server_name     mysite.com;

        access_log      /var/log/nginx/access.log;
        error_log       /var/log/nginx/error.log warn;

        index           index.php index.html;
        root        /full/path/to/public_html;

} <--- you forgot this one

        location ~* \.(js|css|png|jpg|jpeg|gif|ico|html)$ {
                expires max;
        }


        location ~ index.php {
                include     /etc/nginx/fastcgi_params;
                keepalive_timeout 0;
                fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_pass    127.0.0.1:9000;
        }

    }

вы должны закрыть сервер{} перед определением местоположения.

или измените владельца файлов на www-data или apache, если у вас нет доступа к файлам.