nginx 是轻量级的Web服务器。由于配置简单,容量小被应用于各个项目。
在java企业级开发中,常常作为前端 静态资源的代理的服务器,如果配置的好可支持5W并发量。
作用:
- 反向代理
- 正向代理
- 负载均衡
- HTTP服务器(包含动静分离)
区别及意义:
正向代理,代理介于 client 与 service 之间, client 通过proxy 去访问service 返回资源 (代理客户端)
想象你挂VPN的代理并设置一些东西就可以通过某台机器FQ了。
反响代理:proxyService代理service,client 不知道service 的存在,将访问service 全全交给了proxyService (代理原始服务器)
理解:nginx代理服务器这样你就不用去编写任何配置,交给nginx 去配置就好了,nginx收到你的请求会自动根据配置转发到对应的服务器去。
何为均衡负载:(多用于服务器集群)其实和ZUUL比较像
均衡负载表示通过代理服务器统一去管理其他服务器,然后client 访问代理服务器(proxyService),proxyService去均衡的分发请给个其他服务器,保证每个服务器得到均衡的并发。
nginx 通过反向代理实现均衡负载。
实现均衡负载的处理方式:
- round-robin:轮询。以轮询方式将请求分配到不同服务器上
- least-connected:最少连接数。将下一个请求分配到连接数最少的那台服务器上
- ip-hash :基于客户端的IP地址。散列函数被用于确定下一个请求分配到哪台服务器上
流程理解:
例:假设访问springBoot 启动的1个服务 Ip:192.168.255.255:10010 使用niginx代理后项目的请求流程理解:
1、浏览器发起请求 如:www.wuyou.com 浏览器就会进行域名解析,转换成IP+端口号进行访问,所以浏览器将找到hosts 文件中的对应关系,如果找不到就到中央服务器那找(肯定能找到照只要你的网站做了备案并通过),所以你只需要增加一个该文件的配置即可:192.168.255.255 www.wuyou.com
2、这样当你访问 www.wuyou.com 该域名自动会被解析成192.168.255.255 该IP
3、在HTTP协议中,默认端口号是80 端口,所以你访问域名时IP:port 是192.168.255.255:80 这与我们实际想访问的服务器端口不匹配,这时候就需要用到nginx 了
4、在nginx 中修改conf 配置文件,监听80端口并配置类似路由的配置即可实现请求的转发。见以下配置:
server { listen 80; #监听的端口号 server_name www.wuyou.com; #域名 proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / { proxy_pass http://192.168.255.255:10010; #转发的地址 proxy_connect_timeout 600; #超时 proxy_read_timeout 600; } }
以上就是整个执行流程。