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

负载均衡

为了避免服务器崩溃,让用户有更好的体验,我们通过负载均的方式来分担服务器的压力 我们可以建立很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,中间服务器会在服务器集群中选择一个压力较小的服务器,将请求引入该服务器

负载均衡几种常用的方式:

  1. 轮询(默认):每个请求按照时间顺序逐一分配到不同的服务器,如果服务器down掉,能自动剔除
  2. weight: weight 代表权重,默认为1,权重越高,被分配的客户端越多

    1. upstream myserver {
    2. server ip:port weight=5;
    3. server ip:port weight=10;
    4. }
  3. ip_hash: 每个请求按照ip的 hash 结果分配,这样每个访问客户固定访问一个后端服务器,可以解决session问题

    1. upstream myserver {
    2. ip_hash
    3. server ip:port;
    4. server ip:port;
    5. }
  4. fair(第三方): 按照后端服务器的响应时间分配请求,相应时间断的优先分配

    1. upstream myserver {
    2. server ip:port;
    3. server ip:port;
    4. fair
    5. }
    1. http {
    2. upstream myserver {
    3. server ip:port;
    4. server ip:port;
    5. }
    6. server {
    7. location / {
    8. #...
    9. proxy_pass http://myserver;
    10. proxy_connect_timeout 10;
    11. }
    12. }

反向代理

反向代理就是请求统一被 Nginx 接受,然后按照一定的规则分发给后端的业务处理服务器进行处理

  1. http {
  2. #...
  3. server {
  4. #...
  5. location /api {
  6. proxy_set_header Host $host;
  7. proxy_set_header X-Real-IP $remote_addr;
  8. proxy_pass http://${backend};
  9. }
  10. #...
  11. }
  12. }

Nginx 配置文件主要有3部分:

  1. 全局块:从配置文件的开始到 events 块之间的内容,主要设置一些影响 nginx 服务器整体运行的配置指令
    1. worker_process 1; work_process 值越大,可支持的并发处理量也越多
  2. event块:主要影响 Nginx 服务器与用户的网络连接数
    1. 比如 worker_connections 1024; 支持的最大连接数
  3. HTTP块:Nginx 服务器中最频繁的部分
    1. http 全局块:
    2. server 块:虚拟主机