你知道当你把网址输入到浏览器按下回车键后,背后发生了多少事吗?
# ngnix 的作用
- 反向代理
- 负载均衡
- HTTP 服务器(动静分离)
- 正向代理
# 反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
简单来说就是真实的服务器不能直接被外部网络访问,所以需要一台代理服务器,而代理服务器能被外部网络访问的同时又跟真实服务器在同一个网络环境,当然也可能是同一台服务器,端口不同而已。
可以保证内网的安全,可以使用反向代理提供 WAF 功能,阻止 web 攻击
反向代理的流程
正向代理
# 简单的反向代理 demo
原理:首先在 host 文件 把一个域名映射到虚拟机的 80 端口,然后请求来到虚拟机后,符合虚拟机里面的 nginx 的配置,然后 nginx 帮我们代理到目标地址
server { | |
listen 80; | |
server_name gulimall.com; #监听此域名的80端口 | |
#charset koi8-r; | |
#access_log /var/log/nginx/log/host.access.log main; | |
location / { | |
proxy_pass http://192.168.163.1:10000; #代理到目标的地址 | |
} | |
} |
# nginx 和 gateway 配合使用流程分析
整个图示的流程
输入网址,映射到服务器上面的 80 端口,然后 nginx 反向代理给内网的 gateway 网关地址,gateway 在根据请求的路由,跳转到不同的微服务
注意 nginx 代理会丢失一部分信息,比如 host 头
# 最终产生的效果
请求接口,请求页面 使用同一个地址
- nginx 直接代理给网关,网关判断
- 如果是 /api/***, 转交给对应的服务器
- 如果满足域名,转交给对应的服务,显示页面