Решение проблем, связанных с ошибкой NGINX «403 Forbidden»

«403 Forbidden» — наиболее распространенная ошибка при работе с NGINX. В этой статье мы расскажем о причинах возникновения 403 forbidden NGINX, а также о том, как найти ее причину и исправить основную проблему.

  • Об ошибке
  • Поиск файла конфигурации NGINX
  • Некорректный индексный файл
  • Автоиндекс
  • Права доступа к файлам
  • Идентификация пользователя NGINX
  • Установите права собственности на файл
  • Установите права доступа

«403 Forbidden» — это универсальная ошибка NGINX, которая указывает на то, что вы запросили что-то, а NGINX (по ряду причин) не может это предоставить. «403» является кодом состояния HTTP, который означает, что веб-сервер получил и понял ваш запрос, но не может предпринять никаких дальнейших действий.

По умолчанию файлы конфигурации NGINX находятся в папке /etc/nginx. Если вы просмотрите этот каталог, то найдете несколько конфигурационных файлов для различных модулей сервера.

Главный файл конфигурации — /etc/nginx/nginx.conf. Он содержит основные директивы для NGINX и является аналогом файла httpd.conf для Apache.

Чтобы отредактировать этот файл, используйте команду:

CentOS 7: sudo nano /etc/nginx/conf.d/test.example.com.conf
Ubuntu 16.04: sudo nano /etc/nginx/sites-available/test.example.com.conf

Одна из наиболее распространенных причин ошибки 403 forbidden NGINX — некорректная настройка индексного файла.
nginx.conf указывает, какие индексные файлы должны загружаться, и в каком порядке. Например, приведенная ниже строка указывает NGINX искать index.html, затем index.htm, затем index.php:

index index.html index.htm index.php;

Если ни один из этих трех файлов не будет найден в каталоге, NGINX вернет ошибку «403 Forbidden».

Примечание. Имена файлов чувствительны к регистру. Если nginx.conf указывает index.html, а файл называется Index.html, это приведет к ошибке «403 Forbidden».

Если вы хотите использовать имя индексного файла, которое ваш веб-сервер NGINX не распознает, отредактируйте nginx.conf и добавьте имя файла в строку конфигурации индекса.

Например, чтобы добавить index.py в список распознаваемых индексных файлов, отредактируйте эту строку следующим образом:

index index.html index.htm index.php index.py;

Сохраните изменения, а затем перезапустите NGINX командой:

sudo nginx -s reload

Альтернативным решением является разрешение индекса директории. Индекс директории означает, что если индексный файл не найден, сервер отобразит все содержимое директории.

По соображениям безопасности индекс директории в NGINX по умолчанию отключен.

При «403 forbidden NGINX», если вы хотите показать индекс директории в ситуациях, когда NGINX не может найти (идентифицировать) файл, отредактируйте nginx.

conf, как описано выше, и добавьте в него две следующие директивы:

Autoindex on;
Autoindex_exact_size off;

Эти директивы должны быть добавлены в блок location. Можно либо добавить их в существующий блок location/, либо добавить новый. Окончательный результат должен выглядеть так:

location / {
  [pre-existing configurations, if applicable]
  autoindex on;
  autoindex_exact_size off;
  }

Также можно активировать индексирование директории в определенной папке, если не хотите, чтобы она была доступна для всего сайта:

location /myfiles {
  autoindex on;
  autoindex_exact_size off;
  }

Сохраните изменения в файле, затем перезапустите NGINX командой:

sudo nginx -s reload

Некорректные права доступа к файлам являются еще одной причиной ошибки «403 Forbidden NGINX». Для использования с NGINX рекомендуется стандартная настройка: для каталогов — 755 и для файлов — 644. Пользователь NGINX также должен быть владельцем файлов.

Для начала нужно определить, от имени какого пользователя запущен NGINX. Для этого используйте команду:

ps -ef | grep nginx

В этом примере рабочий процесс NGINX работает от имени пользователя nginx.

Перейдите на уровень выше корневой директории документа сайта. Например, если корневая директория вашего сайта /usr/share/nginx/example.com, перейдите в /usr/share/nginx с помощью команды:

cd /usr/share/nginx

Измените права собственности на все файлы в директориях нижних уровней на пользователя nginx с помощью команды:

sudo chown -R nginx:nginx *

403 forbidden NGINX — как исправить: установите права доступа для каждой директории на 755 с помощью команды:

sudo chmod 755 [имя директории]

Например, чтобы установить права доступа для директории example.com, используется команда:

sudo chmod 755 example.com

Затем перейдите в корневой каталог веб-документа:

sudo chmod 755 example.com

Измените права доступа для всех файлов в этой директории с помощью команды:

sudo chmod 644 *

Пожалуйста, оставляйте ваши комментарии по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, лайки, дизлайки, отклики, подписки!

Вадим Дворниковавтор-переводчик статьи «Solve an NGINX 403 Forbidden Error»

Решение проблем, связанных с ошибкой NGINX «403 Forbidden»

«403 Forbidden» — наиболее распространенная ошибка при работе с NGINX. В этой статье мы расскажем о причинах возникновения 403 forbidden NGINX, а также о том, как найти ее причину и исправить основную проблему.

  • Об ошибке
  • Поиск файла конфигурации NGINX
  • Некорректный индексный файл
  • Автоиндекс
  • Права доступа к файлам
  • Идентификация пользователя NGINX
  • Установите права собственности на файл
  • Установите права доступа

«403 Forbidden» — это универсальная ошибка NGINX, которая указывает на то, что вы запросили что-то, а NGINX (по ряду причин) не может это предоставить.

«403» является кодом состояния HTTP, который означает, что веб-сервер получил и понял ваш запрос, но не может предпринять никаких дальнейших действий.

По умолчанию файлы конфигурации NGINX находятся в папке /etc/nginx. Если вы просмотрите этот каталог, то найдете несколько конфигурационных файлов для различных модулей сервера.

Главный файл конфигурации — /etc/nginx/nginx.conf. Он содержит основные директивы для NGINX и является аналогом файла httpd.conf для Apache.

Чтобы отредактировать этот файл, используйте команду:

CentOS 7: sudo nano /etc/nginx/conf.d/test.example.com.conf
Ubuntu 16.04: sudo nano /etc/nginx/sites-available/test.example.com.conf

Одна из наиболее распространенных причин ошибки 403 forbidden NGINX — некорректная настройка индексного файла.
nginx.conf указывает, какие индексные файлы должны загружаться, и в каком порядке. Например, приведенная ниже строка указывает NGINX искать index.html, затем index.htm, затем index.php:

index index. html index.htm index.php;

Если ни один из этих трех файлов не будет найден в каталоге, NGINX вернет ошибку «403 Forbidden».

Примечание. Имена файлов чувствительны к регистру. Если nginx.conf указывает index.html, а файл называется Index.html, это приведет к ошибке «403 Forbidden».

Если вы хотите использовать имя индексного файла, которое ваш веб-сервер NGINX не распознает, отредактируйте nginx.conf и добавьте имя файла в строку конфигурации индекса.

Например, чтобы добавить index.py в список распознаваемых индексных файлов, отредактируйте эту строку следующим образом:

index index.html index.htm index.php index.py;

Сохраните изменения, а затем перезапустите NGINX командой:

sudo nginx -s reload

Альтернативным решением является разрешение индекса директории. Индекс директории означает, что если индексный файл не найден, сервер отобразит все содержимое директории.

По соображениям безопасности индекс директории в NGINX по умолчанию отключен.

При «403 forbidden NGINX», если вы хотите показать индекс директории в ситуациях, когда NGINX не может найти (идентифицировать) файл, отредактируйте nginx.conf, как описано выше, и добавьте в него две следующие директивы:

Autoindex on;
Autoindex_exact_size off;

Эти директивы должны быть добавлены в блок location. Можно либо добавить их в существующий блок location/, либо добавить новый. Окончательный результат должен выглядеть так:

location / {
  [pre-existing configurations, if applicable]
  autoindex on;
  autoindex_exact_size off;
  }

Также можно активировать индексирование директории в определенной папке, если не хотите, чтобы она была доступна для всего сайта:

location /myfiles {
  autoindex on;
  autoindex_exact_size off;
  }

Сохраните изменения в файле, затем перезапустите NGINX командой:

sudo nginx -s reload

Некорректные права доступа к файлам являются еще одной причиной ошибки «403 Forbidden NGINX». Для использования с NGINX рекомендуется стандартная настройка: для каталогов — 755 и для файлов — 644. Пользователь NGINX также должен быть владельцем файлов.

Для начала нужно определить, от имени какого пользователя запущен NGINX. Для этого используйте команду:

ps -ef | grep nginx

В этом примере рабочий процесс NGINX работает от имени пользователя nginx.

Перейдите на уровень выше корневой директории документа сайта. Например, если корневая директория вашего сайта /usr/share/nginx/example.com, перейдите в /usr/share/nginx с помощью команды:

cd /usr/share/nginx

Измените права собственности на все файлы в директориях нижних уровней на пользователя nginx с помощью команды:

sudo chown -R nginx:nginx *

403 forbidden NGINX — как исправить: установите права доступа для каждой директории на 755 с помощью команды:

sudo chmod 755 [имя директории]

Например, чтобы установить права доступа для директории example.com, используется команда:

sudo chmod 755 example.com

Затем перейдите в корневой каталог веб-документа:

sudo chmod 755 example. com

Измените права доступа для всех файлов в этой директории с помощью команды:

sudo chmod 644 *

Пожалуйста, оставляйте ваши комментарии по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, лайки, дизлайки, отклики, подписки!

Вадим Дворниковавтор-переводчик статьи «Solve an NGINX 403 Forbidden Error»

Php с Nginx — 403 Запрещено

спросил

Изменено 7 месяцев назад

Просмотрено 24 тысячи раз

Я хочу запустить проект yii2 (расширенный шаблон) с nginx. Я использую виртуальный бокс с бродягой (ubuntu 16.04, php 5.6).

В моем файле Nginx есть следующие настройки: 9/активы/.*\.php$ { отрицать все; } расположение ~ \.php$ { включить fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127. 0.0.1:9000; #fastcgi_pass unix:/var/run/php5-fpm.sock; try_files $uri = 404; } расположение ~* /\. { отрицать все; } }

У меня есть следующий структурный проект с разрешением:

 vagrant@machine1]-[/var/www]-[git master]
$ ls -ля внешнего интерфейса/
всего 68
drwxrwxr-x 1 бродяга бродяга 4096 июл 5 14:27 ./
drwxrwxr-x 1 бродяга бродяга 4096 9 июля 16:14 ../
drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 активы/
drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 bootstrap/
drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 компоненты/
drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 config/
drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 контроллеры/
drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 данные/
drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 помощники/
drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 сообщения/
drwxrwxr-x 1 бродяга бродяга 4096 июл 5 14:27 модели/
drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 модули/
drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 время выполнения/
drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 валидаторы/
drwxrwxr-x 1 бродяга бродяга 4096 июль 5 14:27 просмотров/
drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 веб/
drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 widgets/
 

Вывод журналов ошибок nginx:

 2018/07/09 21:42:36 [ошибка] 23865#23865: *1 индекс каталога "/var/www/frontend/web/" запрещен, клиент: 192. 168.56.1, сервер: b2bfrontend.test, запрос: "GET / HTTP/1.1", хост: "b2bfrontend.test"
 

If I run b2bfrontend.test I get an error — 403 Forbidden

  • php
  • nginx
  • yii
  • yii2
  • yii2-advanced-app

Just fix location from:

 location / {
  try_files $uri $uri/ /index.php$is_args$args;
}
 

по адресу:

 местоположение / {
  try_files $uri /index.php$is_args$args;
}
 

причина : он пытается пройти $uri/ , который равен /var/www/frontend/web/ (поскольку он существует) и выполнить индексирование каталогов, что кажется недопустимым.

сообщение уже говорит это:

индекс каталога «/var/www/frontend/web/» запрещен

Я раскомментировал эту строку, и теперь она работает:

 fastcgi_pass unix:/var/run/php5-fpm.sock;
 

В моем случае у меня Debian 9, поэтому я немного изменил его:

9(. +\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; }

Ваш сервер nginx, скорее всего, работает либо под пользователем nginx, либо под www-data, в то время как ваши файлы принадлежат vagrant:vagran. Проверьте, под каким пользователем работает nginx, и соответствующим образом измените владельца ваших файлов. Кроме того, если вы используете php-fpm для php, проверьте конфигурацию php-fpm и посмотрите, какой пользователь там определен.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

php — проблема с конфигурацией Nginx: получение 403 Forbidden

спросил

Изменено 7 лет, 2 месяца назад

Просмотрено 3к раз

Я пытаюсь настроить веб-приложение с помощью Nginx, но при попытке получить к нему доступ я получаю ошибку 403. Я использовал различные подходы к решению этой проблемы, в том числе убедился, что мои разрешения установлены, но безрезультатно.

вот конфигурация для веб-приложения:

 server {
    слушать 80;
    имя_сервера локальный хост
    индекс index.php index.html index.htm;
    корень /usr/share/nginx/html/my-app/webapp;
    port_in_redirect выключен;
    # Использовать кешированный или фактический файл, если он существует, в противном случае передать запрос в WordPress
    расположение / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }
    # Запретить доступ к скрытым файлам
    расположение ~* /\.ht {
        отрицать все;
        доступ_лог выключен;
        log_not_found выключен;
    }
    # Передать PHP-скрипты в PHP-FPM
    расположение ~* \.php$ {
        try_files $uri /index.php;
        fastcgi_index index.php;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        включить fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }
 }
 

Я запустил chmod -R 777 my-app , чтобы дать ему все разрешения.