常见面试题

直接让web 服务运行在80 端口不行吗?为什么要用 反向代理 如 nginx?

让web 服务直接运行在 80 端口是可行的,但是会带来一些问题

问题一:其他项目只能使用非80端口

通常一台服务器会部署很多项目,但是 80 端口只有一个, 访问web服务需要通过“网址:端口”的形式,80端口作为HTTP协议的默认端口访问时可以省略 如果一个web项目独自占用了80端口,就会造成其他项目只能使用其他端口,用户就需要手动在网址后面加上对应端口才能访问到,这对用户来讲是不可接受的

问题二:不方便扩展

当访问量很小时可能只需要一台服务器实例就能支撑,但是当访问量上升之后服务就需要横向扩展上负载均衡之类的措施。这个时候每增加一个负载就需要一台独立的带80端口的服务器,会平白无故的增大不必要的开销,而且在负载均衡的方案选择上可能也只有为数不多的选择。

使用Nginx反向代理有什么好处?

好处一:复用80端口
好处二:扩展方便,负载均衡
好处二:动静分离

所有动态资源的请求交给应用服务器,而静态资源的请求(例如图片、视频、CSS、JavaScript文件等)则直接由Nginx返回到浏览器。