这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记。Nginx作为相对轻量级的服务器,常常用作服务器及服务器及群的入口服务器,其反向代理、负载均衡和动静分离三大功能非常常用,部署快、配置简单、可扩展性强,长期处在热门位置。
Nginx的部署与配置
1.走进Nginx
Nginx(engine x)是一个高性能的web服务器,特点是占有内存少、并发能力强。由于它的代码完全是由C语言写成的,所以性能和效率都非常好,远超一些热门服务器并发连接数的响应。
2.三大特点
反向代理
通常的正向代理:
graph TD
Client1 --> Agent
Client2 --> Agent
Client3 --> Agent
Agent --> Cloud
Cloud --> Server1
Cloud --> Server2
Cloud --> Server3
反向代理:
graph TD
Client1 --> Cloud
Client2 --> Cloud
Client3 --> Cloud
Cloud --> Agent
Agent --> Server1
Agent --> Server2
Agent --> Server3
正向代理是代理客户端的,而反向代理是代理服务器的,它使得客户感知不到是部署在不同的服务器上的。
负载均衡
graph TD
Client1 --> Cloud
Client2 --> Cloud
Client3 --> Cloud
Cloud --> Agent
Agent --> 147请求
Agent --> 258请求
Agent --> 369请求
Nginx提供负载均衡有两种策略,分别是内置策略和扩展策略。内置策略为轮询、加权轮询和ip hash,轮询相当于个服务器权重一样,依次循环,不过在服务器本身有差别的时候容易无法合理分配资源;加权轮询就可以解决这个问题,可以将资源更好性能更好的服务器的权重置为更高,这样可以更合理的分配资源,提升性能;而ip hash对客户的ip进行hash计算,根据结果将同一个客户的请求可以分发给同一台服务器处理,可以解决session不共享问题,当然,利用redis解决这个更好。
动静分离
现在大多数静态文件相关的请求都是不希望也是到后台处理,这样放在前面阶段,不仅通过缓存等操作可以提高资源访问速度,还能够缓解动态请求处理服务器的压力。
3.使用与配置
下载nginx源码
./configuer make make install 后一般会在/usr/local/nginx下
而配置一般找到nginx.conf配置文件进行基本配置:
#负载均衡
upstream test {
server 127.0.0.1:7777 weight=2 #权重为2
server 127.0.0.1:8888 weight=3
server 127.0.0.1:9999 weight=1
}
#反向代理,server中
location / {
root html;
index index.html index.htm;
proxy_pass https://localhost:8080;
}
最后,还可配置https及其转发。