Nginx(“Engine X”)是一款高性能的HTTP和反向代理服务器,它不仅可以用来处理静态内容,还能作为负载均衡器和HTTP缓存。它的主要特性包括高并发处理能力、良好的稳定性和灵活的配置。不论是在互联网应用、移动应用开发还是企业内部网站,Nginx都可以发挥重要作用。
1. 静态文件托管
Nginx 常被用来托管静态文件,如 HTML、CSS、JavaScript 以及图片等。它的处理速度快,能够应对大量的并发请求。
server {
listen 80; # 监听80端口
server_name example.com; # 指定域名
location / {
root /var/www/html; # 指向静态文件目录
index index.html; # 指定默认文件
}
}
在上面的配置中,当用户访问 http://example.com
时,Nginx 会从 /var/www/html
目录中寻找 index.html
文件并返回给用户。
2. 反向代理
Nginx 可以作为反向代理服务器,将请求转发到后端的应用服务器。这对于负载均衡、提高安全性和缓存静态文件都很有帮助。
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://backend_server; # 将请求转发到后端服务器
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; # 转发真实IP
}
}
在这个配置中,所有发往 http://api.example.com
的请求都将被转发到 backend_server
,实现了反向代理。
3. 负载均衡
Nginx 可以将用户请求分散到多个后端服务器上,达到负载均衡的效果。这在高并发场景下尤为重要。
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
server_name loadbalancer.example.com;
location / {
proxy_pass http://backend; # 将请求均衡分发到后端服务器
}
}
通过上述配置,Nginx 会根据轮询方式将请求分发到 backend1
、backend2
和 backend3
中的任意一台服务器。
4. SSL/TLS 终止
Nginx 还可以处理 HTTPS 请求,通过 SSL/TLS 为网站提供加密通信。
server {
listen 443 ssl;
server_name secure.example.com;
ssl_certificate /etc/ssl/certs/example.com.crt; # SSL 证书
ssl_certificate_key /etc/ssl/private/example.com.key; # 证书私钥
location / {
root /var/www/html;
index index.html;
}
}
在这个例子中,Nginx 监听 443
端口,并使用指定的 SSL 证书来加密与用户的通信。
5. HTTP 缓存
Nginx 还可以用作缓存服务器,减轻后端服务器的负担,提高响应速度。
proxy_cache_path /tmp/cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
location / {
proxy_pass http://backend;
proxy_cache my_cache;
proxy_cache_valid 200 1h; # 缓存 200 响应 1小时
}
}
以上配置设置了一个名为 my_cache
的缓存区域,Nginx 将会缓存后端服务器的 200 响应,对于频繁访问的内容,可以显著提高性能。
结论
Nginx 是一款功能强大的服务器软件,广泛应用于互联网及企业内部的多种场景。通过灵活的配置方式,它不仅能处理静态文件,还能实现负载均衡、反向代理、HTTPS 支持和缓存等多种功能。了解和掌握 Nginx,将为前端开发或运维工作提供极大的帮助。