How to Find Default Nginx Document Root Directory Location?

Published June 29, 2024

Problem: Locating Nginx's Default Document Root

Finding the default document root directory for Nginx can be hard, especially for new users or system administrators. This directory is where Nginx serves web content from, and knowing its location is important for website management and troubleshooting. The exact path can vary depending on the operating system, Nginx version, and installation method, making it difficult to find without guidance.

Locating the Default Nginx Document Root

Step 1: Check the Nginx Configuration File

To find the main Nginx configuration file, look in the "/etc/nginx" directory. The main file is usually named "nginx.conf". Use this command to view its contents:

cat /etc/nginx/nginx.conf

When checking the configuration for document root settings, look for "root" or "location" directives. These often set the document root path. For example:

server {
    ...
    root /var/www/html;
    ...
}

Step 2: Common Default Paths for Nginx Document Root

On Ubuntu and Debian systems, the default Nginx document root is often at:

/var/www/html

For other Linux distributions, common default paths include:

  • CentOS/RHEL: "/usr/share/nginx/html"
  • Fedora: "/usr/share/nginx/html"
  • Arch Linux: "/usr/share/nginx/html"

These paths can change based on your setup and any custom configurations made during installation.

Verifying the Nginx Document Root Location

Using Command Line Tools

To check the document root using command line tools, use this command:

nginx -T | grep root

This command shows the Nginx configuration and filters for lines with "root". The output will display the document root paths in your Nginx configuration. For example:

root /var/www/html;

Another helpful command is:

ps aux | grep nginx

This command shows running Nginx processes and may include the path to the configuration file, which can help locate the document root.

Testing the Document Root

To test if you found the correct document root, create a simple HTML file in the directory:

echo "<html><body><h1>Test Page</h1></body></html>" | sudo tee /var/www/html/test.html

Replace "/var/www/html" with your suspected document root path.

Access this test file through a web browser by visiting:

http://your_server_ip/test.html

If you see the "Test Page" heading, you have identified the Nginx document root. If not, check your Nginx configuration or look for the document root in a different location.

Changing the Nginx Document Root

Modifying the Nginx Configuration

To change the Nginx document root:

  1. Open the Nginx configuration file:

    sudo nano /etc/nginx/nginx.conf
  2. Find the server block and update the root directive:

    server {
    ...
    root /path/to/new/document/root;
    ...
    }
  3. Save the file and exit the editor.

  4. Check the configuration for errors:

    sudo nginx -t
  5. If there are no errors, restart Nginx to apply the changes:

    sudo systemctl restart nginx

Considerations When Changing Document Root

When changing the Nginx document root:

  1. Set permissions and ownership for the new directory:

    sudo chown -R www-data:www-data /path/to/new/document/root
    sudo chmod -R 755 /path/to/new/document/root
  2. Update related configurations:

    • Check server blocks in separate configuration files.
    • Modify PHP-FPM configurations if using PHP.
    • Update location blocks that reference the old document root.
  3. Test your website after making changes.

  4. Update your deployment scripts to use the new document root location.

  5. Create a backup of your old document root before making changes.

Troubleshooting Nginx Document Root Issues

Common Problems and Solutions

Incorrect permissions:

  • Problem: Nginx can't access files in the document root.
  • Solution: Set permissions using:
    sudo chown -R www-data:www-data /var/www/html
    sudo chmod -R 755 /var/www/html

Misconfigurations in server blocks:

  • Problem: Wrong document root path in server block configuration.
  • Solution: Check server blocks in /etc/nginx/sites-available/ and update the root directive:
    server {
      ...
      root /correct/path/to/document/root;
      ...
    }

Logging and Debugging

Using Nginx error logs to find document root problems:

  • Check error logs at /var/log/nginx/error.log:
    sudo tail -f /var/log/nginx/error.log
  • Look for messages about file permissions or "No such file or directory" errors.

Debugging techniques for document root issues:

  1. Use nginx -T to view the configuration:
    sudo nginx -T
  2. Test Nginx configuration:
    sudo nginx -t
  3. Check file existence and permissions:
    ls -l /path/to/document/root
  4. Try accessing files directly using curl:
    curl -I http://localhost/index.html