Nginx directory and file structure

Nginx directory and file structure

show me the basic directory structure and location of nginx on linux and include info about the sites-available file

Leo AI said:
/etc/nginx/
 is the primary configuration directory for Nginx on most Linux distributions, including Debian and Ubuntu. 

Main Configuration Files and Directories

  • /etc/nginx/nginx.conf: The main configuration file read at startup. It includes other configuration files and sets global settings. 
  • /etc/nginx/conf.d/*.conf: Directory for additional configuration files (e.g., SSL tweaks, custom settings). These are included in the http { } context and are ideal for site-specific or module-specific configurations. 
  • /etc/nginx/sites-available/: Contains virtual host (site) configuration files for individual domains or websites.  These files are not active by default.
  • /etc/nginx/sites-enabled/: Contains symbolic links to files in sites-available.  Only configurations in this directory are loaded by Nginx. This allows easy enabling/disabling of sites.
  • /etc/nginx/snippets/: Stores reusable configuration snippets (e.g., common proxy settings) that can be included in multiple server blocks. 
  • /etc/nginx/fastcgi_params/etc/nginx/scgi_params/etc/nginx/uwsgi_params/etc/nginx/proxy_params: Standard parameter files for different backend protocols (FastCGI, SCGI, uWSGI, reverse proxy). 

The sites-available File

  • Purpose: Holds inactive site configurations.  Each file typically defines a server { } block with settings like listenserver_name, and root.

After changes, reload Nginx:

sudo systemctl reload nginx

To disable, remove the link:

sudo rm /etc/nginx/sites-enabled/example.com

To enable the site, create a symbolic link:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Example file/etc/nginx/sites-available/example.com

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}

Default Document Root

  • Debian/Ubuntu: The default site (/etc/nginx/sites-enabled/default) typically uses /var/www/html as the document root. 
  • Older Debian systems: May use /var/www/nginx-default
  • Custom locations: You can change the root directive in any server block to point to any directory (e.g., /srv/my-site/html). 
✅ Best Practice: Use sites-available and sites-enabled to manage multiple sites. Keep custom configurations in conf.d/ for clarity and maintainability.