«403 Forbidden» — найбільш поширена помилка при роботі з NGINX. У цій статті ми розповімо про причини виникнення 403 forbidden NGINX, а також про те, як знайти її причину й усунути основну проблему.

Про помилку

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

Пошук файлу конфігурації NGINX

За замовчуванням файли конфігурації NGINX знаходяться в папці /etc/nginx. Якщо ви проглянете цей каталог, то знайдете кілька конфігураційних файлів для різних модулів сервера.

Головний файл конфігурації — /etc/nginx/nginx2.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 — некоректна настройка індексного файлу.
nginx2.conf вказує, які індексні файли повинні завантажуватися, і в якому порядку. Наприклад, наведена нижче рядок вказує NGINX шукати index.html, потім index.htm, потім index.php:

index index.html index.htm index.php;

Якщо жоден з цих трьох файлів не буде знайдено в каталозі, NGINX поверне помилку «403 Forbidden».

Примітка. Імена файлів чутливі до регістру. Якщо nginx2.conf вказує index.htmlфайл називається Index.htmlце призведе до помилки «403 Forbidden».

Якщо ви хочете використовувати ім’я індексного файлу, що ваш веб-сервер NGINX не розпізнає, відредагуйте nginx2.conf і додайте ім’я файлу в рядок конфігурації індексу.

Наприклад, щоб додати index.py у список розпізнаваних індексних файлів, відредагуйте цей рядок наступним чином:

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

Збережіть зміни, а потім перезапустіть NGINX командою:

sudo nginx -s reload

Автоіндексація

Альтернативним рішенням є дозвіл індексу директорії. Індекс директорії означає, що якщо індексний файл не знайдений, сервер відобразить вміст директорії.

З міркувань безпеки індекс директорії в NGINX за замовчуванням вимкнено.

При «403 forbidden NGINX», якщо ви хочете показати індекс директорії в ситуаціях, коли NGINX не може знайти (ідентифікувати) файл, відредагуйте nginx2.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

Для початку потрібно визначити, від імені якого користувача запущений 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» дружною командою проекту Сайтостроение від А до Я.