Nginx的应用场景

一、简介

Nginx是一个高性能的HTTP和反向代理web服务器。其特点是占用内存少,并发能力强。

特点

描述

占有内存少

保持10,000个没有活动的连接,只占2.5M内存

并发能力强

Nginx能支持高达50,000个并发连接数

在实际的项目中,Nginx常用功能有反向代理,负载均衡和静态服务器,达到提高服务器的防护、速度和可靠度的目的。

反向代理

反向代理是一种服务器架构模式,客户端发送的请求首先到达反向代理服务器,由反向代理服务器再转发给后端的真实服务器,最后反向代理服务器将后端服务器的响应结果返回给客户端。在这个过程中,客户端只会与反向代理服务器进行通信,而不会直接与后端真实服务器进行通信,反向代理服务器会处理和转发所有的请求和响应。

负载均衡

负载均衡是反向代理的一项重要功能,即将请求分发到多个后端服务器,实现负载均衡。每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。

静态服务器

当Nginx被用作静态服务器时,其主要功能是托管和提供静态资源,如HTML文件、图片、CSS文件和JavaScript文件等。这些静态资源是由开发者或运维人员预先上传到Nginx服务器上的,而Nginx则负责提供对这些静态资源的访问服务。

二、Nginx的应用场景

什么场景考虑用Nginx?

1.希望增加服务器的安全性。

使用Nginx反向代理隐藏目标服务器的真实IP地址和端口,来保护服务器资源,还可以通过配置进行流量清洗,过滤掉恶意流量和请求,保护后端服务器免受攻击(非杜绝)。

server {  
    listen 80;  
    server_name example.com;  
  
    location /prod-api/ {  
        proxy_pass http://backend_server_address;  
        proxy_set_header Host $host;  
        proxy_set_header X-Real-IP $remote_addr;  
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Range $http_range;
        proxy_set_header If-Range $http_if_range;
    }  
}
#上述配置将监听80端口,并将匹配到的请求转发到后端服务器(backend_server_address)。

2.希望快速响应静态资源。

前后端分离的项目,Nginx适合部署前端代码。Nginx提供高效的静态文件服务和缓存机制,将前端代码部署到Nginx上,提高网站的响应速度和性能。

server {
    listen       80;
    server_name  example.com;

    location / {
        root   html/dist;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
}
#在上面的配置中,前端工程dist部署在Nginx解压包的\html目录下
#浏览器输入example.com 即可打开dist/index.html页面

3.希望在高并发的场景下提高系统响应速度。

Nginx本身支持高并发的访问,还可以通过优化Nginx反向代理配置,比如配置负载均衡,快速响应大量的请求。

下面是Nginx负载均衡的常用策略配置,包括轮询,权重,IP Hash,url_hash。

轮询

http {  
    upstream backend_servers {  
        server backend1.example.com;  
        server backend2.example.com;  
        server backend3.example.com;  
    }  
    server {  
        ...
    }  
}
#轮询:轮询是默认的负载均衡方式,按照时间顺序将请求分配给不同的后端服务器。

 权重

http {  
    upstream backend_servers {  
        server backend1.example.com weight=2;  
        server backend2.example.com weight=1;  
        server backend3.example.com weight=1;  
    }  
    server {  
        ...
    }  
}
#权重:权重越高处理请求的比例越高。

 IP Hash

http {  
    upstream backend_servers {  
        ip_hash;
        server backend1.example.com;  
        server backend2.example.com;  
        server backend3.example.com;  
    }
    server {  
        ...
    }  
}
#IP Hash:由于IP地址具有唯一性,因此可以保证相同的客户端总是被分配到相同的服务器上。

 url_hash

http {  
    upstream backend_servers {  
        hash $request_uri consistent; 
        server backend1.example.com;  
        server backend2.example.com;  
        server backend3.example.com;  
    }  
    server {  
        ...
    }  
}
#url_hash:通常用于缓存场景,确保相同URL的请求被定向到同一服务器。

三、总结

这篇文章介绍了Nginx的常用功能和应用场景,在实际配置中,还需根据具体的需求和场景选择合适的配置策略。

你可能感兴趣的:(Nginx,nginx,负载均衡,性能优化,系统安全)