简单小日志: 这里记录一下 总感觉有人搞不清正向代理和反向代理。
- nginx 正向代理使用场景
客户端 (例如js程序) -----请求-----》 服务端(例如java应用)
一般客户端和服务端不再一台服务器上,直接请求会报 跨域问题,当然解决跨域问题比较多,服务器端做跨域过滤什么的,总体还是感觉使用Nginx代理解决跨域比较好。
js程序--》nginx -----请求-----》服务端
nginx 和 js程序是在一台服务器上的,nginx代理js 访问 服务端
这就是 nginx 正向代理的一个使用场景。
- nginx 反向代理使用场景
我们的微服务比较多,分布式在多台机器上,或者一台机器上开了不同的端口,为了服务的安全,云主机就开了一个对外接口,任何外部访问都进过这一个端口进行转发。
外部请求-------》 nginx ------转发---》 各个微服务
例如 开发端口 8088, 然后
http:// xxxxxxxx:8088/serviceA/api nginx 转发到 serviceA 上
http:// xxxxxxxx:8088/serviceB/api nginx 转发到 serviceB 上
http:// xxxxxxxx:8088/serviceC/api nginx 转发到 serviceC 上
此时 nginx 和 各个微服务在一起(一台机器或同一个网络里面) 这就是nginx反向代理的一个使用场景。
- 总结
正向代理 : nginx代理客户端
反向代理 : nginx代理服务端
你是客户端,
你要办事(请求服务接口),
nginx 就是一个中介,
正向代理是 中介是你亲戚,你几乎不跑路找他帮你办事,
反向代理是你主动跑了很远的路找到了陌生的中介者(他),然后他才帮你办事。
- 综合运用
一般 正向代理和反向代理都会用到 ,在微服务开发中。
客户端---》nginx正向代理-----------》nginx反向代理---转发--》微服务
当然你可以 将 nginx反向代理转换成 API 网关,例如SpringCloud-Getway、Kong、或云产品(例如阿里云 负载均衡产品,EDAS等)