Nginx 高级 Web 应用用法
Nginx 是一款高性能的 Web 服务器和反向代理服务器,广泛应用于各种互联网场景。在高级 Web 应用中,Nginx 可以发挥出更大的作用。
一、负载均衡
在高并发的 Web 应用中,单一服务器往往无法承受大量的请求。Nginx 可以作为负载均衡器,将请求分发到多个后端服务器上,从而提高系统的整体性能和可靠性。
例如,以下是一个简单的负载均衡配置:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
}
在这个配置中,定义了一个名为backend
的上游服务器组,包含三个后端服务器。当请求到达 Nginx 时,它会根据一定的算法(如轮询、加权轮询、IP 哈希等)将请求分发到其中一个后端服务器上。
二、缓存
Nginx 可以作为缓存服务器,缓存静态资源和动态内容,减少后端服务器的负载,提高响应速度。
对于静态资源,可以使用expires
指令设置缓存时间:
location ~* \.(jpg|jpeg|png|gif|css|js)$ {
expires 30d;
}
对于动态内容,可以使用proxy_cache
指令设置缓存策略:
location /dynamic-content/ {
proxy_pass http://backend;
proxy_cache my_cache;
proxy_cache_valid 200 30m;
}
在这个配置中,将动态内容的请求转发到后端服务器,并设置了一个名为my_cache
的缓存区。响应状态码为 200 的内容将被缓存 30 分钟。
三、SSL 加密
为了保证数据传输的安全性,Web 应用通常需要使用 SSL 加密。Nginx 可以轻松地配置 SSL 证书,实现 HTTPS 访问。
首先,需要获取 SSL 证书,可以从证书颁发机构(CA)购买或使用免费的证书(如 Let's Encrypt)。然后,在 Nginx 配置中添加以下内容:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
# 其他配置...
}
四、高可用
为了确保 Web 应用的高可用性,可以使用 Nginx 和其他工具(如 Keepalived)实现双机热备或多机热备。
Keepalived 可以监控 Nginx 服务器的状态,当主服务器出现故障时,自动将请求切换到备用服务器上。
以下是一个简单的 Keepalived 配置:
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100
}
}
在 Nginx 配置中,可以使用upstream
指令和keepalive
参数来实现与后端服务器的长连接:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
keepalive 100;
}
# 其他配置...
}