In this section, we will explore how to configure NGINX to serve directory listings. This feature allows users to view the contents of a directory directly in their web browser. This can be particularly useful for sharing files or providing access to a collection of resources.
Key Concepts
- Directory Listing: A feature that displays the contents of a directory in a web browser.
- autoindex Directive: The NGINX directive used to enable or disable directory listings.
- autoindex_exact_size Directive: Controls whether file sizes are displayed in exact bytes or in a human-readable format.
- autoindex_localtime Directive: Determines whether file times are displayed in local time or GMT.
Enabling Directory Listings
To enable directory listings in NGINX, you need to modify your server block configuration. Here is a step-by-step guide:
Step 1: Open the NGINX Configuration File
Locate and open your NGINX configuration file. This is typically found at /etc/nginx/nginx.conf
or in a site-specific configuration file within /etc/nginx/sites-available/
.
Step 2: Modify the Server Block
Add the autoindex
directive within the server block or a specific location block where you want to enable directory listings.
server { listen 80; server_name example.com; location /files/ { autoindex on; root /var/www/html; } }
Explanation
listen 80;
: Specifies that the server listens on port 80.server_name example.com;
: Defines the server name.location /files/ { ... }
: Configures the/files/
URL path.autoindex on;
: Enables directory listings.root /var/www/html;
: Sets the root directory for the location.
Step 3: Test the Configuration
Before reloading NGINX, it's a good practice to test the configuration for syntax errors.
Step 4: Reload NGINX
If the configuration test is successful, reload NGINX to apply the changes.
Additional Directives
autoindex_exact_size
By default, NGINX displays file sizes in exact bytes. You can change this to a human-readable format (e.g., KB, MB) by setting autoindex_exact_size
to off
.
autoindex_localtime
By default, NGINX displays file times in GMT. You can change this to local time by setting autoindex_localtime
to on
.
Practical Example
Here is a complete example that includes all the discussed directives:
server { listen 80; server_name example.com; location /files/ { autoindex on; autoindex_exact_size off; autoindex_localtime on; root /var/www/html; } }
Exercise
Task
- Enable directory listings for the
/downloads/
directory on your NGINX server. - Configure the listings to display file sizes in a human-readable format.
- Ensure that file times are displayed in local time.
Solution
-
Open your NGINX configuration file:
sudo nano /etc/nginx/sites-available/default
-
Add the following configuration:
server { listen 80; server_name example.com; location /downloads/ { autoindex on; autoindex_exact_size off; autoindex_localtime on; root /var/www/html; } }
-
Test the configuration:
sudo nginx -t
-
Reload NGINX:
sudo systemctl reload nginx
Common Mistakes and Tips
- Incorrect Path: Ensure the
root
directive points to the correct directory on your server. - Permissions: Verify that the NGINX user has read permissions for the directory you are listing.
- Configuration Syntax: Always test your configuration with
nginx -t
before reloading to catch syntax errors.
Conclusion
In this section, you learned how to enable and configure directory listings in NGINX using the autoindex
directive. You also explored additional directives to customize the display of file sizes and times. This knowledge will help you provide easy access to directory contents through a web browser. In the next section, we will cover how to create custom error pages in NGINX.