这是我参与8月更文挑战的第4天,活动详情查看:8月更文挑战
工作后就会发现,当下的应用部署时都会使用到Nginx来提升响应性能,今天就和大家分享一下Nginx在工作中最常使用的功能点,也作为自己最近使用Nginx的总结。大家相互学习,共同进步!
- 第一讲我们学习了Nginx是什么,为什么使用并如何安装Nginx。一起来学Nginx(一)
- 第二讲我们认识了Nginx的配置文件,并熟悉默认配置具体含义。一起来学Nginx(二) 今天我们就一起学习一下Nginx在动静分离、反向代理和负载均衡三大应用场景中的实际配置。
Nginx动静分离
动静分离就是指Nginx作为静态资源服务器,将项目的静态文件布置在Nginx路径下,实现静态资源的快速响应和加载。Nginx作为静态资源服务器时的配置为:
server{
listen 80;
server_name localhost;
location / {
root /path/html;
index index.html index.htm;
}
location ^~ /images/ {
root /path/images;
}
location ~* \.(css|js)$ {
root /path/style;
}
}
location用于设置请求地址映射到实际的访问地址,使用方式有:
location /:表示通用匹配,所有请求都会匹配到location /images/:表示正常字符串/image/路径匹配location ~:表示使用正则匹配,区分大小写location ~*:一个不区分大小写的正则匹配location ^~ /images/:路径前缀匹配,匹配成功后返回location = /:进行等号后字符串精准匹配,匹配成功后返回 从上到下,匹配的优先级依次增加,即当匹配到location = /是便不会进行其他匹配,而如果没有匹配到任何其他映射路径,就会匹配通用路径location /。
Nginx反向代理
反向代理与正向代理相反,是指Nginx作为代理服务器接收客户端请求,并将请求转发至其他服务器中,最后接收服务器响应结果返回给客户端。在客户端看来,Nginx就是唯一的服务器资源,所有操作都是向Nginx请求并等待返回结果。
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8089;
}
}
如上配置,当我们在访问本地路径http://locahost时,Nginx作为代理服务器就会将我们的请求转发至http://127.0.0.1:8089的服务中,实现请求的转发。这样我们可以通过Nginx服务器来请求与Nginx服务器处于同一局域网中但是不可以外网访问的主机。
Nginx负载均衡
高并发场景下需要部署多机来缓解服务端压力,就需要制定一种策略来分发请求到每个机器中,Nginx自身就提供了相关的负载均衡策略,能够根据规则分派请求。同时Nginx也有着很好的并发性能,能够支撑大量请求并进行分发。
upstream web_server{
server 10.25.220.33:9091;
server 10.25.220.33:9092;
server 10.25.220.34:9093;
server 10.25.220.35:9094;
}
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://web_server;
}
}
如上配置中,我们在两台机器的四个端口部署了同一个项目,根据配置内容,在我们向Nginx服务器请求时,Nginx会将我们的请求转发至四个服务中的一个。如果不作其他配置,Nginx默认采用轮询的方式依次将请求发送至每个服务中,除此之外,我们还可以设置根据权重的方式和ip_hash的方式来实现负载均衡。
根据设置权重实现负载均衡
upstream web_server{
server 10.25.220.33:9091 weight=2;
server 10.25.220.33:9092 weight=3;
server 10.25.220.34:9093 weight=5 backup;
}
...
根据客户端IP地址取哈希实现负载均衡
upstream web_server{
ip_hash;
server 10.25.220.33:9091 ;
server 10.25.220.34:9092 ;
server 10.25.220.35:9093 ;
}
...