Nginx
这里是我自己的总结
Nginx简介
Nginx的三个功能:
- 反向代理
- 负载均衡
- 动静分离
使用Nginx的场景:
反向代理: 当需要高并发后端处理消息的时候,往往分成很多个服务器分开处理,但是客户端的会话消息就分散在了很多服务器上,就需要一个中间件:Nginx对此进行转发。
负载均衡: 后端的服务器很多台,但是可能性能(内存啊空间啊什么的)不一样,因此还可以按照权重进行转发。
动静分离: 将动态资源和静态资源可以分布在不同服务器上从而达到动静分离.
什么是正向代理什么是反向代理
正向代理: 代理客户端:也就是帮助客户端发送消息的,叫做正向代理
反向代理: 代理服务端:也就是客户端没有感知,但是消息转发给很多服务器的,叫做反向代理
Nginx配置解析
nginx主配置文件:/usr/local/nginx/conf/nginx.conf
默认启动 nginx时,使用的配置文件是:安装路径/conf/nginx.conf
文件。
可以在启动 nginx时通过 -c选项来指定要读取的配置文件。
原装配置详解
1 | [root@centos7 nginx]# cat ./conf/nginx.conf |
可以发现,nginx.conf配置文件中的内容分为三个部分:
第一部分:main全局块(全局设置), 作用域是全局
第二部分:events块(nginx工作模式)
第三部分:http块(http设置)
下面逐一了解。
main全局块(全局设置)
events块(nginx工作模式)
http块(http设置)
以下全都来自黑马程序员笔记,自存方便看而已
nginx反向代理和负载均衡
对登录功能测试完毕后,接下来,我们思考一个问题:前端发送的请求,是如何请求到后端服务的?
前端请求地址:http://localhost/api/employee/login
后端接口地址:http://localhost:8080/admin/employee/login
很明显,两个地址不一致,那是如何请求到后端服务的呢?
1). nginx反向代理
nginx 反向代理,就是将前端发送的动态请求由 nginx 转发到后端服务器

那为什么不直接通过浏览器直接请求后台服务端,需要通过nginx反向代理呢?
nginx 反向代理的好处:
提高访问速度
因为nginx本身可以进行缓存,如果访问的同一接口,并且做了数据缓存,nginx就直接可把数据返回,不需要真正地访问服务端,从而提高访问速度。
进行负载均衡
所谓负载均衡,就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器。
保证后端服务安全
因为一般后台服务地址不会暴露,所以使用浏览器不能直接访问,可以把nginx作为请求访问的入口,请求到达nginx后转发到具体的服务中,从而保证后端服务的安全。

nginx 反向代理的配置方式:
1 | server{ |
proxy_pass该指令是用来设置代理服务器的地址,可以是主机名称,IP地址加端口号等形式。
如上代码的含义是:监听80端口号, 然后当我们访问 http://localhost:80/api/../.. 这样的接口的时候,它会通过 location /api/ {}
这样的反向代理到 http://localhost:8080/admin/上来。
接下来,进到nginx-1.20.2\conf,打开nginx配置
1 | # 反向代理,处理管理端发送的请求 |
当在访问 http://localhost/api/employee/login ,nginx接收到请求后转到 http://localhost:8080/admin/ ,
故最终的请求地址为 http://localhost:8080/admin/employee/login, 和后台服务的访问地址一致。
2). nginx 负载均衡
当如果服务以集群的方式进行部署时,那nginx在转发请求到服务器时就需要做相应的负载均衡。其实,负载均衡从本质上来说也是基于反向代理来实现的,最终都是转发请求。
nginx 负载均衡的配置方式:
1 | upstream webservers{ |
upstream:如果代理服务器是一组服务器的话,我们可以使用upstream指令配置后端服务器组。
如上代码的含义是:监听80端口号, 然后当我们访问 http://localhost:80/api/../..这样的接口的时候,它会通过 location /api/ {}
这样的反向代理到 http://webservers/admin ,根据webservers名称找到一组服务器,根据设置的负载均衡策略(默认是轮询)转发到具体的服务器。
注:upstream后面的名称可自定义,但要上下保持一致。
nginx 负载均衡策略:
名称 | 说明 |
---|---|
轮询 | 默认方式 |
weight | 权重方式,默认为1,权重越高,被分配的客户端请求就越多 |
ip_hash | 依据ip分配方式,这样每个访客可以固定访问一个后端服务 |
least_conn | 依据最少连接方式,把请求优先分配给连接数少的后端服务 |
url_hash | 依据url分配方式,这样相同的url会被分配到同一个后端服务 |
fair | 依据响应时间方式,响应时间短的服务将会被优先分配 |
具体配置方式:
轮询:
1 | upstream webservers{ |
weight:
1 | upstream webservers{ |
ip_hash:
1 | upstream webservers{ |
least_conn:
1 | upstream webservers{ |
url_hash:
1 | upstream webservers{ |
fair:
1 | upstream webservers{ |