Nginx 主要功能
- Web 服务器
- 反向代理
- 负载均衡
- 正向代理
Web 服务器
可作为独立的 Web 服务器,直接处理和响应 HTTP/HTTPS 请求,静态文件传输效率非常高。
配置示例
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
root /data/www/test;
index index.html;
}
location ~ \.(gif|jpg|jpeg|png|bmp|swf|css|js)$ {
root /data/www/file;
}
}
反向代理
反向代理是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端。简单来说就是真实的服务器不能直接被外部网络访问,所以需要一台代理服务器。
配置示例
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass https://localhost:8080;
proxy_set_header Host $host:$server_port;
}
}
访问 localhost 时,相当于访问 localhost:8080。
负载均衡
负载均衡是将请求分摊到多个操作单元上进行执行。当有 2 台或以上服务器时,根据规则将请求分发到指定的服务器上处理。Nginx 支持自带 3 种负载均衡策略,还有 2 种常用的第三方策略。
轮询(RR,默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除此服务器。
配置示例
upstream test {
server localhost:8080;
server localhost:8081;
}
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass http://test;
proxy_set_header Host $host:$server_port;
}
}
若指定服务器不可访问,请求会自动跳转到其他可用服务器。
权重(Weight)
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。
配置示例
upstream test {
server localhost:8080 weight=9;
server localhost:8081 weight=1;
}
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass http://test;
proxy_set_header Host $host:$server_port;
}
}
大部分请求会访问到权重较高的服务器。
IP Hash
解决 Session 共享问题。每个请求按访问 IP 的 hash 结果分配,这样每个访客固定访问一个后端服务器。
配置示例
upstream test {
ip_hash;
server localhost:8080;
server localhost:8081;
}
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass http://test;
proxy_set_header Host $host:$server_port;
}
}

