直接让web服务运行在80端不行吗,为什么要用nginx反向代理?
Web服务是可以运行在80端口的,而且默认也是监听80端口。为什么用nginx做反向代理,应该是跟题主的应用环境有关
题主当前的应用环境
按照题主的意思,应该是你当前的web服务器上监听的是非80端口,这种有可能是你当前使用的web服务器上有多个web应用,且监听的是不同的端口,比如 8080、8081、8082……。这种环境应该是网站在很初始的阶段,因为经费紧张,所以需要一台web服务器部署多个web应用(假设)
但是在公网访问web服务的时候,默认是使用80端口,但是web服务监听的是非80端口,所以需要通过反向代理服务器,将请求转发给对应的web服务器上的web应用。
接下来需要了解一下什么是反向代理和负载均衡,有利于之后的架构优化
什么是反向代理
就是真实服务器不直接访问,而是通过代理进行访问。客户端直接访问的是反向代理服务器,然后反向代理服务器接收用户的请求然后重新发起请求去请求后端对于的web服务,web服务处理完成之后,将结果返回给反向代理服务器,最后由反向代理服务器将结果响应给客户端。
这样做有什么好处呢?
(1)解决非80端口的问题。
(2)隐藏真实的web服务器,同时在反向代理服务器可以做安全配置,提供安全性。
(3)有利于后期架构优化,比如做负载均衡
nginx作为web服务器软件,同时也可以实现反向代理。
什么是负载均衡
负载均衡 (load balance),将多个请求分摊到多个操作单元上执行。当系统面临大量用户访问,负载过高的时候,通常会使用增加服务器数量来进行横向扩展,使用集群和负载均衡提高整个系统的处理能力。
实现负载均衡,除掉昂贵的硬件设备实现外,还有软件实现,主要有lvs、haproxy和nginx。nginx实现负载均衡是基于nginx反向代理功能的,所以一开始使用nginx做反向代理有利于后期做负载均衡。
总结
Web服务是可以运行在80端口的,使用nginx做反向代理,可以解决web应用使用非80端口的问题,还有利于后期的架构优化演变。