This quick guide will address a common error when working with NGINX servers (403 Forbidden), its causes, and how to fix it.
What is the Nginx 403 Error?
Nginx 403 Forbidden error is a status code generated and displayed to the user when a client tries to access a part of the webserver with insufficient permissions. For example, NGINX protects directory listing and will result in an error 403.
Server Side Causes of Nginx 403 Error
Before we get started, it is good to note that the error can come from the client-side and not the server itself. We shall address the server-side errors first, then client-side errors.
Cause 1: Incorrect Index File
The very first and common cause of the NGINX 403 Forbidden error is an incorrect configuration for the index file.
The Nginx configuration file specifies which index files to load and the order in which to load them. However, if the specified index files are not in the directory, Nginx will return 403 forbidden error.
For example, the config below defines the index files and how they should be loaded
index index.html index.htm index.html inde.php;
}
One way to resolve this issue is to add the index file specified in the configuration file or add the available index file to the config file.
Another way to solve this issue is to allow Nginx to list directories if the index file is unavailable. Enable this module by adding the following entry to the configuration file.
autoindex on;
autoindex_exact_size on;
}
NOTE: We do not recommend this method on publicly accessible servers.
For more information on how to serve static content, consider the Nginx documentation resource provided below:
https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/
Cause 2: Incorrectly set permissions
Nginx 403 forbidden error can also result from files and directories having incorrectly set permissions. For Nginx to successfully server a specific file and resource to the client, Nginx needs to have RWX—read, write and execute—permissions on the entire path.
To resolve this error, change the directories permission to 755 and the file permissions to 644. Ensure that the user running the Nginx process owns the files. For example, set user to www-data:
Finally, set the directory and file permissions as:
sudo chmod 644 {files}
Client-Side Cause of Error 403
As mention, at other times, the 403 error may user-caused instead of being on the server-side. To resolve such issues on the client-side, perform the following operations.
- Ensure you are accessing the correct web location
- Clear browser cache
- Ensure the firewall or proxy allows you to access the web resource.
Conclusion
This quick guide discussed the causes of the NGIX 403 forbidden error and various ways to fix it. It is good to look at the server logs before attempting any troubleshooting methods.