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 thehttp { }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 insites-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 likelisten,server_name, androot.
After changes, reload Nginx:
sudo systemctl reload nginxTo disable, remove the link:
sudo rm /etc/nginx/sites-enabled/example.comTo 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/htmlas the document root. - Older Debian systems: May use
/var/www/nginx-default. - Custom locations: You can change the
rootdirective in any server block to point to any directory (e.g.,/srv/my-site/html).
✅ Best Practice: Usesites-availableandsites-enabledto manage multiple sites. Keep custom configurations inconf.d/for clarity and maintainability.