Web servers are fundamental to hosting applications. Learn to configure and manage them effectively.
Nginx
Installation
apt install nginx # Debian/Ubuntu
dnf install nginx # Red Hat
pacman -S nginx # Arch
Basic Configuration
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Configuration Files
/etc/nginx/nginx.conf # Main config
/etc/nginx/sites-available/ # Available sites
/etc/nginx/sites-enabled/ # Enabled sites
Management
nginx -t # Test configuration
systemctl reload nginx # Reload config
systemctl restart nginx # Restart server
Apache
Installation
apt install apache2 # Debian/Ubuntu
dnf install httpd # Red Hat
Virtual Hosts
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Management
apache2ctl configtest # Test config
systemctl reload apache2
a2ensite site.conf # Enable site
a2dissite site.conf # Disable site
Reverse Proxy
Nginx as reverse proxy:
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
Static File Serving
location /static/ {
alias /var/www/static/;
expires 30d;
add_header Cache-Control "public, immutable";
}
Logs
# Nginx
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
# Apache
tail -f /var/log/apache2/access.log
tail -f /var/log/apache2/error.log
Performance Tuning
- Enable gzip compression
- Use caching headers
- Optimize worker processes
- Monitor connection limits
Web servers are the gateway to your applications.