«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 командой:
Альтернативным решением является разрешение индекса директории. Индекс директории означает, что если индексный файл не найден, сервер отобразит все содержимое директории.
По соображениям безопасности индекс директории в 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 командой:
Некорректные права доступа к файлам являются еще одной причиной ошибки «403 Forbidden NGINX». Для использования с NGINX рекомендуется стандартная настройка: для каталогов — 755 и для файлов — 644. Пользователь NGINX также должен быть владельцем файлов.
Для начала нужно определить, от имени какого пользователя запущен NGINX. Для этого используйте команду:
В этом примере рабочий процесс NGINX работает от имени пользователя nginx.
Перейдите на уровень выше корневой директории документа сайта. Например, если корневая директория вашего сайта /usr/share/nginx/example.com, перейдите в /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
Измените права доступа для всех файлов в этой директории с помощью команды:
При работе с серверами и веб-ресурсами мы сталкиваемся с ошибками, которые вызываем при обслуживании и настройке. Когда вы сталкиваетесь с такими ошибками, вам необходимо как можно быстрее диагностировать и устранить проблему, чтобы избежать простоев и потери данных.
В этой краткой статье рассматривается типичная ошибка при работе с серверами (403 Forbidden), ее причины и способы ее устранения.
Ошибка Nginx 403 Forbidden – это код состояния, сгенерированный и отображаемый пользователю, когда клиент пытается получить доступ к части веб-сервера с недостаточными разрешениями. Например, NGINX защищает список каталогов и приведет к ошибке 403.
Причины ошибки Nginx 403 на стороне сервера
Прежде чем мы начнем, стоит отметить, что ошибка может исходить от клиента, а не от самого сервера. Сначала мы рассмотрим ошибки на стороне сервера, а затем ошибки на стороне клиента.
Причина 1: неправильный индексный файл
Самая первая и частая причина ошибки NGINX 403 Forbidden – это неправильная конфигурация индексного файла.
Файл конфигурации Nginx указывает, какие индексные файлы загружать и в каком порядке их загружать. Однако, если указанные индексные файлы отсутствуют в каталоге, Nginx вернет ошибку 403 Forbidden.
Например, конфигурация ниже определяет индексные файлы и способ их загрузки.
location / {
index index.html index.htm index.html inde.php;
}
Один из способов решения этой проблемы – добавить индексный файл, указанный в файле конфигурации, или добавить доступный индексный файл в файл конфигурации.
Другой способ решить эту проблему – разрешить Nginx отображать каталоги, если индексный файл недоступен. Включите этот модуль, добавив следующую запись в файл конфигурации.
location / {
autoindex on;
autoindex_exact_size on;
}
Примечание
Мы не рекомендуем этот метод на общедоступных серверах.
Для получения дополнительной информации о том, как обслуживать статический контент, рассмотрите ресурс документации Nginx, представленный ниже:
https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/
Причина 2: неправильно настроенные разрешения
ошибка Nginx 403Forbidden также может возникать из-за неверно установленных разрешений для файлов и каталогов. Чтобы Nginx мог успешно передать клиенту определенный файл и ресурс, Nginx должен иметь разрешения RWX – чтение, запись и выполнение – на всем пути.
Чтобы устранить эту ошибку, измените разрешение каталогов на 755 и разрешение файла на 644. Убедитесь, что пользователь, запускающий процесс Nginx, владеет файлами. Например, установите пользователя на www-data:
sudo chown -R www-data:www-data *
Наконец, установите права доступа к каталогу и файлу как:
sudo chmod 755 {dir}
sudo chmod 644 {files}
Причина ошибки на стороне клиента 403
Как уже упоминалось, в других случаях ошибка 403 может быть вызвана пользователем, а не на стороне сервера. Чтобы решить такие проблемы на стороне клиента, выполните следующие операции.
- Убедитесь, что вы получаете доступ к правильному веб-адресу
- Очистить кеш браузера
- Убедитесь, что брандмауэр или прокси-сервер разрешает вам доступ к веб-ресурсу.
Заключение
В этой краткой статье обсуждаются причины ошибки NGIX 403 Forbidden и различные способы ее устранения. Прежде чем пытаться использовать какие-либо методы устранения неполадок, рекомендуется просмотреть журналы сервера.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Часто, когда при работе сайта возникает серьезный сбой, мы видим в окне браузера сообщение об ошибке, в котором указывается его код. И если код ошибки «404», сегодня настолько знаменит, что даже стал в своем роде мемом, то что значит «403 forbidden», знают далеко не все.
- 1 Что означает ошибка 403 forbidden?
- 2 Что за ошибка 403 forbidden? SIP
- 3 Как можно исправить ошибку 403 forbidden?
- 4 Проблемы с файлом index
- 5 Настройка прав доступа
- 6 Проблемы при настройке .htacces
- 7 Ошибка из-за неправильного пути к странице
- 8 Ошибки из-за необновившегося кэша DNS
- 9 Вывод
Что означает ошибка 403 forbidden?
Итак, давайте разбираться, что за ошибка 403 при входе на сайт. На самом деле, по сути она ошибкой и не является, поскольку возникает только в тех случаях, когда пользователь пытается открыть файлы или страницы, к которым у него нет доступа.
То есть, существует достаточно большая вероятность того, что когда вы видите на экране заветное число «403», то сайт и сервер, на котором он находится полностью исправны. Просто вам запрещен просмотр страницы.
При этом, нужно понимать, что запрет может быть наложен провайдером, или владельцем компьютера (смартфона или планшета), которым вы пользуетесь. Возможно, сайт на который вы пытаетесь зайти нарушает законодательство, заблокирован по политическим причинам, или просто попадает под действие «родительского контроля». Также достаточно часто встречаются ситуации, когда системные администраторы крупных фирм, специально блокируют доступ к определенным сайтам, например соцсетям.
С другой стороны, ошибка 403 forbidden nginx, может возникнуть при неправильной настройке CMS сайта или сервера. Кроме того, известно, что поисковые системы крайне не любят, когда на сайтах есть страницы открытые для, но на которые не может зайти пользователь.
Соответственно нужно с этим как-то разбираться.
Что за ошибка 403 forbidden? SIP
В списке кодов ответа SIP, можно встретить сразу несколько типов этой ошибки:
- Invalid Phone Number (несуществующий номер);
- User Disabled (пользователь отключен);
- Caller Not Registered (направления не существует);
- Conflict (использование уже занятого SIP-номера);
- Forbidden (пользователь не зарегистрирован);
- Out of Look-Ahead Retries (перебор узлов завершен);
- No Money Left on RFC Account (недостаточно денег для соединения);
- Wrong Guess (неправильный пароль);
- Empty Route Set (отсутствуют шлюзы в роутинге).
В нашем случае, наиболее актуальными являются User Disabled и Forbidden.
Как можно исправить ошибку 403 forbidden?
Для начала, давайте сразу определимся с возможными вариантами работы с такой ошибкой:
- На вашем сайте есть страницы, которые вы специально закрыли для доступа;
- Ошибки 403, возникают в результате некорректной работы CMS, сервера или хостинг-провайдера.
В первом случае вам нужно не устранять запрет на доступ к страницам, а минимизировать возможный вред для сайта со стороны поисковых систем.
Делается это достаточно просто – вы запрещаете индексацию конкретных страниц и файлов в robots.txt.
Во втором случае, необходимо провести ряд мероприятий, для того, чтобы понять причину проблемы. Например, вполне может оказаться, что за ошибкой 403 forbidden, на телефоне, скрывается банальный запрет на просмотр страниц с мобильных устройств. Или по каким-то причинам, сайт был заблокирован для конкретного IP. Для того чтобы это понять, достаточно просто попробовать зайти на сайт с разных устройств и сетей.
Достаточно часто, администраторы сайта закрывают доступ для IP, которые были использованы для различных вредоносных действий, например, при DDoS-атаке, или попытке взлома. В этом случае, единственным вариантом устранения ошибки 403, является смена IP-адреса, или общение с администрацией сайта.
Проблемы с файлом index
Достаточно часто, причиной, из-за которой ваш сервер вернул ошибку 403, является неправильная настройка файла index. Он напрямую ответственен за то как отображается главная страница. Если у этого файла задано неправильное расширение, то браузер просто не будет получать данные, и соответственно выдаст ошибку 403.
Какие расширения являются допустимыми для index:
- *.htm;
- *.html;
- *.phtml;
- *.shtml
- *.php.
Оптимальным, является последний вариант, поскольку он наиболее универсален. Если у вас почему-то не выходит добавить файл index, с нужным расширением, то можно создать свой index, в .htaccess. Иногда так делают для предотвращения DDoS-атак.
Настройка прав доступа
Иногда бывает так, что администратор при работе с данными на сервере, случайно запрещает доступ к конкретным файлам или даже целым папкам. Это приводит к тому, что сервер, при попытке обратиться к файле или папке вернет код 500, а пользователь получит все ту же ошибку 403.
Для того, чтобы исправить и избежать таких ошибок в дальнейшем, необходимо составить список папок, к которым разрешен доступ, а также тех, доступ к которым вы хотите запретить. Для того, чтобы настроить права доступа к файлам и папкам, можно воспользоваться любым ftp-менеджером, либо воспользоваться консольной командой CHMOD.
Чаще всего, правильным вариантом, будет установка прав 644 для файлов, и 755 для папок.
Проблемы при настройке .htacces
Как известно, доступ к файлам и папкам, можно настроить не только с помощью прав на сервере, но и в .htacces. По настройке этого файла необходимо писать отдельную статью.
Как минимум нужно сказать о том, что изменять или снимать какие-то запреты доступа, самостоятельно не рекомендуется.
Ошибка из-за неправильного пути к странице
Возможен вариант, когда пользователь пытается открыть файл, который просто находится не в той папке. Причиной этого может быть:
- Перенос файла в другую папку;
- Ошибка при написании пути к файлу.
В обоих случаях необходимо проверить фактическое расположение файла или папки на сервере, для того чтобы убедиться в том, что они находятся по нужному адресу.
Достаточно часто, папки для загрузки сайта отличаются у разных хостеров. Поэтому, нелишним будет уточнить у службы поддержки куда именно залиты файлы сайта.
Ошибки из-за необновившегося кэша DNS
В этом варианте, ошибка 403, может возникнуть из-за переноса на другой хостинг, либо на другую зону, которую выделил хостер. Иногда, это приводит к тому, что кэш DNS, не успевает обновиться и пользователь будет направлен по несуществующему адресу.
В таких ситуациях достаточно просто подождать от нескольких часов до суток, для того чтобы DNS обновился и все заработало.
Вывод
Несмотря на то, что с формальной точки зрения «ошибка 403», реальной ошибкой не является. Это вполне нормальная реакция на запрет или невозможность получить доступ к файлу или папке. Другое дело, что запрет доступа к файлам или папкам может быть вызван как целенаправленными действиями администрации сайта, так и ошибками при настройке.
Тем не менее, в некоторых случаях они могут повлечь достаточно неприятные последствия для вашего сайта, особенно в том случае, если страница есть в индексе поисковых систем, но доступ к ней все равно запрещен.
Для того, чтобы исправить такие ошибки, нужно в первую очередь тщательно проверить все настройки доступа, а именно:
- Файл index;
- .htacces;
- Доступ сервере;
- Путь к файлам.
Если проверка всего вышеперечисленного не дала реальных результатов, то возможно достаточно просто подождать обновления кэша DNS. Также не лишним будет связаться с провайдером. Существует вероятность, что доступ к вашему сайту был закрыт из-за нарушений законодательства или жалоб.
Нельзя забывать о том, что в ряде случаев, проблемы могут быть вызваны противоправными действиями с конкретного IP-адреса, а значит сайт и сервер настроены совершенно правильно. В этом случае необходимо связаться с провайдером и рассказать ему о трудностях, с которыми столкнулись. Также можно попробовать выйти на контакт с администрацией сайта.

SEO-эксперт, вебмастер с 2009 года, CEO компании CyberShark. За время работы в сфере создания и продвижения сайтов протестировал более сотни хостингов.
Загрузка…
I have nginx installed with PHP-FPM on a CentOS 5 box, but am struggling to get it to serve any of my files — whether PHP or not.
Nginx is running as www-data:www-data, and the default «Welcome to nginx on EPEL» site (owned by root:root with 644 permissions) loads fine.
The nginx configuration file has an include directive for /etc/nginx/sites-enabled/*.conf, and I have a configuration file example.com.conf, thus:
server {
listen 80;
Virtual Host Name
server_name www.example.com example.com;
location / {
root /home/demo/sites/example.com/public_html;
index index.php index.htm index.html;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /home/demo/sites/example.com/public_html$fastcgi_script_name;
include fastcgi_params;
}
}
Despite public_html being owned by www-data:www-data with 2777 file permissions, this site fails to serve any content —
[error] 4167#0: *4 open() "/home/demo/sites/example.com/public_html/index.html" failed (13: Permission denied), client: XX.XXX.XXX.XX, server: www.example.com, request: "GET /index.html HTTP/1.1", host: "www.example.com"
I’ve found numerous other posts with users getting 403s from nginx, but most that I have seen involve either more complex setups with Ruby/Passenger (which in the past I’ve actually succeeded with) or are only receiving errors when the upstream PHP-FPM is involved, so they seem to be of little help.
Have I done something silly here?
- Private Cloud
- Public Cloud
-
- Cloud Servers
- Cloud Networks
- Cloud Load Balancers
- DNS
-
- Object Storage
- Cloud Block Storage
- Cloud File Sharing
-
- Identity Authentication
- Cloud Image Service
- Key Management
-
- Certified Kubernetes
-
- Orchestration
-
- Big Data Services
-
- Solutions
-
- OpenStack Consulting
- OpenStack Upgrades
-
- Kubernetes Enablement
- Managed Zuul
-
- Resources
-
- Blog
- Ebooks & White Papers
- Tutorials
-
- Success Stories
- FAQs
- Videos
-
- VEXXHOST
-
- Company
- Data Center Locations
- Brand Guide
-
- Newsroom
- Events
- Careers
-
HTTP errors are pesky and typically hard to resolve without the right tools. However, with proper investigation and tools, you can easily identify the source of a problem and fix it just as fast. In order to debug or fix 403 Forbidden Nginx errors, all you have to do is check the correct error logs and take the proper action to resolve it. We’ll go over how to check the error logs and the possible scenarios that typically cause these errors.
Finding Error Logs
If you know exactly where the error logs of your Nginx server are, you can skip onto the next section. If you’re not sure where to find the error logs of your Nginx server, then be sure to continue this section.
The path for error logs can change a lot depending on how Nginx was installed on the server and the Linux distribution. If you do not know where your error logs are and you have a hard time going through Nginx configuration, we can use a very small and useful Linux tool with the name of lsof which gives us all the open files associated to a specific process. This will help us find the error log for your web server.
The first step of this is to check for the process ID of the main Nginx process, you can run the following command and except output somewhat similar to the one indicated below:
$ ps x | grep nginx
29229 ? S 0:00 nginx: master process /usr/sbin/nginx
The first column of each row is the process ID, as we can see, the main/master process ID is 29229 in this case, however this will change in every system. Once you have the process ID, you will be able to use the lsof too to get all open files associated to this process by running the following. We’ve trimmed the output to the part you should be looking for, as there might be a lot more data when you run that command:
$ lsof -p 29229
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 29229 root cwd DIR 202,1 4096 2 /
nginx 29229 root rtd DIR 202,1 4096 2 /
nginx 29229 root txt REG 202,1 843656 1182 /usr/sbin/nginx
...
nginx 29229 root 2w REG 202,1 0 262748 /var/log/nginx/error.log
...
As you can see from the above output, we can see that one of the files that are open by this Nginx installation is /var/log/nginx/error.log which (by the file name) does look like an error log. We’ve now identified the path of our Nginx error log and we can move onto finding the reason behind our pesky HTTP error.
Fixing Nginx HTTP errors
Once you have the correct error log file, it’s time to watch for errors. In our experience, the best way to do this is by running a continuous stream of the error log in your shell screen using the tail utility.
$ tail -f /var/log/nginx/error.log
Once you’ve ran this command, tail will continuously output any newly appended content to the error.log as it comes in until you hit Control + C. We recommend that you clear the entire shell screen to make it easy to identify newly appended content. You can do this in Windows (PuTTY) by right clicking the PuTTY menu bar and clicking on “Clear Scrollback” or on Mac OS X by clicking Command + K.
Now, you will need to replicate the issue that you are getting. The error should be printed out right away after you replicate the issue. For example, if you have a 403 Forbidden error, then you should refresh the page that is causing the problem so that a new error log entry can be appended. Once that is done, you’ll see a new line in the error log which should hopefully lead you to the right path to fixing the issue. We’re going to cover a few of the most common issues below.
Incorrect Directory Settings
The error below can be caused by two different reasons: incorrect directory index or disallowed directory listing.
2013/08/31 15:03:43 [error] 29231#0: *2098806 directory index of "/usr/share/nginx/static/" is forbidden, client: 1.1.1.1, server: domain.com, request: "GET / HTTP/1.1", host: "domain.com"
If you are trying to list all the files in a folder, you will get that error if the directory does not have directory listing enabled. You can enable directory listing by adding the following line to your Nginx configuration, you can read more about this option here: http://nginx.org/en/docs/http/ngx_http_autoindex_module.html
autoindex on;
The other possibility for that error to come up is if your index setting is incorrect, so for example, you have a index.php file in that folder, however, your index setting is setup to index.htm and index.html. This means that only these files are checked if no specific file is provided. If you alter it to something like the following, your index.php file should work:
index index.htm index.html index.php;
Incorrect Permissions
The error below is generally caused by incorrect Unix permissions, you will need to make sure you have the correct permissions for the entire path.
2013/09/01 00:31:57 [error] 29231#0: *2115270 open() "/usr/share/nginx/static/forbidden" failed (13: Permission denied), client: 1.1.1.1, server: domain.com, request: "GET /forbidden HTTP/1.1", host: "domain.com"
As you see, the file that we are trying to access is /usr/share/nginx/static/forbidden. In order for Nginx to access it with no problems at all, Nginx must have read permissions for that specific file as well as execute for all the folders above it. This means that /, /usr, /usr/share, /usr/share/nginx and /usr/share/nginx/static must be executable by Nginx and the file /usr/share/nginx/static/forbidden must be readable by Nginx in this case.
Conclusion
We’ve gone through quite a few tools such as tail and lsof. These are just one of the tools which are offered by Linux which allow system administrators to resolve and debug issues much faster and easier. The most important factor in resolving system issues is being able to identify the issue properly, resolution is usually the easiest part once the problem is identified. The larger the toolset of the system administrator, the faster they can identify and fix those problems.
Would you like to know about Zuul, a CI/CD project gating tool? Download our white paper and get reading!



