一简介

Nginx可以用作web服务器来提供静态内容的服务,也可以作为负载均衡器来分配传入的请求到多个后端服务器。

二.区别

1.Nginx作为Web服务器

Nginx配置文件中的server块可以定义用于提供静态内容的根目录(root)和索引文件(index)。

server {
    listen       80;
    server_name  localhost;
 
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

2.Nginx作为负载均衡器

Nginx 既可以作为 7 层(应用层)负载均衡器,也可以作为 4 层(网络层)负载均衡器。

7层负载均衡

在Nginx中,可以使用upstream块定义一个服务器组,并在server块中使用proxy_pass指令将请求转发到这个组。

upstream backend {
    server backend1.example.com;
    server backend2.example.com;
}
 
server {
    listen       80;
    server_name  localhost;
 
    location / {
        proxy_pass http://backend;
    }
}

在以上配置中,Nginx接收到的请求会被均衡地分配到backend1.example.com和backend2.example.com两个后端服务器。

4层负载均衡

# 4层负载均衡 - 基于端口
stream {
    upstream backend {
        server srv.example.com:22;
    }
 
    server {
        listen 12345;
        proxy_pass backend;
    }

在以上配置中,Nginx将进入端口 12345 的 TCP 流量转发到srv.example.com的端口。

三.总结

Nginx作为Web服务器与负载均衡器的主要区别在于是否使用了代理传递机制。前者直接处理请求并提供静态内容,而后者将请求转发给其他服务处理。