Web Servers

Iinstallation and configuration guides for Apache, Nginx, IIS, HAProxy, Caddy, and other web servers.

SSL Subject Alternative Names (SANs): Everything You Need to Know

If you spend enough time around certificates, you eventually run into a hostname mismatch that looks absurdly avoidable. The certificate is valid, signed by a trusted CA, not expired, and still the browser rejects it because the hostname is not covered the way someone assumed. Most of those incidents come back to SANs. Subject Alternative […]

SSL Subject Alternative Names (SANs): Everything You Need to Know Read Post »

Nginx Proxy Cache Configuration: How I Set It Up Without Caching the Wrong Thing

Nginx proxy_cache can make a struggling application look healthy again, but it can also serve the wrong page to the wrong user if you get sloppy. I have seen both outcomes. The good version is a backend that suddenly stops melting under traffic spikes. The bad version is an authenticated dashboard cached for everyone because

Nginx Proxy Cache Configuration: How I Set It Up Without Caching the Wrong Thing Read Post »

Nginx WebSocket Proxy Configuration: The Settings That Actually Matter

WebSocket proxying looks deceptively simple until you hit the first timeout, load balancer mismatch, or upgrade failure. I have seen people copy a normal reverse proxy block, change the upstream URL, and assume it is done. Then they wonder why the browser reports a failed handshake, why idle connections die at sixty seconds, or why

Nginx WebSocket Proxy Configuration: The Settings That Actually Matter Read Post »

Nginx Log Analysis: How I Read Access and Error Logs Without Drowning in Noise

When a site feels slow or unreliable, I still start with logs more often than dashboards. Metrics help, but logs tell me what actually happened to specific requests. They also expose the ugly details dashboards smooth over: repeated client aborts, a sudden flood of 404s from one broken deploy, one upstream timing out while another

Nginx Log Analysis: How I Read Access and Error Logs Without Drowning in Noise Read Post »

Nginx Basic Auth: Quick Access Control Without a Full Auth System

Sometimes you need to protect a URL quickly — a staging environment, an admin panel, a Prometheus metrics endpoint, internal documentation. Setting up a full authentication system is overkill. Nginx’s built-in basic authentication handles these cases well. Basic auth has a reputation for being insecure, but that reputation is mostly from HTTP days. Over HTTPS,

Nginx Basic Auth: Quick Access Control Without a Full Auth System Read Post »

Apache SSL Configuration: Modern Settings for a Secure Setup

Apache’s SSL configuration has improved a lot over the years. Getting it right involves enabling the right modules, configuring ciphers, setting up HSTS, and making sure the certificate chain is complete. Here’s the configuration I use. Required Modules Make sure these modules are enabled: Verify: Virtual Host Configuration A complete HTTPS virtual host: SSLProtocol -all

Apache SSL Configuration: Modern Settings for a Secure Setup Read Post »

Scroll to Top