nginx

Nginx

Nginx 是一个高性能的 HTTP 和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。

Nginx 的主要特点包括:

  • 高性能:Nginx 可以处理大量的并发连接,适合高负载的场景。
  • 反向代理:Nginx 可以作为反向代理服务器,将请求转发到后端服务器。
  • 负载均衡:Nginx 可以将请求分发到多个后端服务器,实现负载均衡。
  • 静态文件服务:Nginx 可以高效地提供静态文件服务,支持 gzip 压缩和缓存。

Nginx 反向代理

Nginx 反向代理的基本配置如下:

1
2
3
4
5
6
7
8
server {
listen 80;
server_name localhost; // 监听80端口,server_name为localhost

location /api/ { // 前端localhost:80/api/ 转发到 后端localhost:8080/admin/
proxy_pass http://localhost:8080/admin/;
}
}

Nginx 反向代理的工作原理是,当客户端请求 Nginx 时,Nginx 会将请求转发到后端服务器(如 Apache Tomcat),然后将后端服务器的响应返回给客户端。

反向代理的好处

  • 提高访问速度:Nginx 可以缓存静态文件,提高访问速度。
  • 可以实现负载均衡,将请求分发到多个后端服务器,提高性能。
  • 可以隐藏后端服务器的真实地址,提高安全性。

负载均衡:把大量的请求按照指定方式均衡的分发到多个后端服务器上,避免单台服务器过载。

1
2
3
4
5
6
7
8
9
10
11
12
13
upstream webservers {
server 192.168.100.128:8080;
server 192.168.100.129:8080;
}

server {
listen 80;
server_name localhost;

location / {
proxy_pass http://webservers/admin; # 负载均衡
}
}

负载均衡策略:

策略 说明
轮询 默认策略,按顺序将请求分发到后端服务器
weight 按照权重分发请求,权重越高,分配的请求越多
ip_hash 根据客户端 IP 地址进行负载均衡,同一 IP 地址的请求会被分发到同一台后端服务器
least_conn 将请求分发到连接数最少的后端服务器
url_hash 根据请求 URL 进行负载均衡,同一 URL 的请求会被分发到同一台后端服务器
fair 根据请求的响应时间进行负载均衡,响应时间越短的服务器会被优先选择

比如使用 weight 策略:

1
2
3
4
5
6
7
8
9
10
11
12
13
upstream webservers {
server 192.168.100.128:8080 weight=90;
server 192.168.100.129:8080 weight=10;
}

server {
listen 80;
server_name localhost;

location / {
proxy_pass http://webservers/admin; # 负载均衡
}
}