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

孟伟康


让web服务运行在80端口是可行的,但是会存在一些问题。

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

通常一台服务器都会部署很多项目,但是80端口只有一个,如果一个web项目独自占用了80端口,就会造成其他项目只能使用其他端口。

我们都知道访问web服务需要通过“网址:端口”的形式,80端口作为HTTP协议的默认端口访问时可以省略。

这样一来对于那些没有在80端口运行的web服务,用户就需要手动在网址后面加上对应端口才能访问到,这对用户来讲是不可接受的。

问题二:不方便扩展

当访问量很小时可能只需要一台服务器实例就能支撑,但是当访问量上升之后服务就需要横向扩展上负载均衡之类的措施。

这个时候每增加一个负载就需要一台独立的带80端口的服务器,会平白无故的增大不必要的开销,而且在负载均衡的方案选择上可能也只有为数不多的选择。

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

好处一:复用80端口

先来看一下使用Nginx反向代理之后多服务共用80端口的示意图:

用户请求首先会到达Nginx,Nginx根据根据链接地址将请求转发至运行在其他端口的web服务上。

Nginx反向代理不仅可以充分利用服务器的性能部署多个web服务,而且多个项目可以共用80端口很友好的对外提供web服务。

好处二:扩展方便

同样先来看一下使用Nginx反向代理之后的扩展方案示意图:

当单实例的web服务支撑不了大量请求时,我们就需要做横向扩容,启动多个实例一起对外提供服务。

使用Nginx方向代理之后,我们只需要找几台服务器,可在任意的端口上启动web服务。

用户请求首先会到达Nginx,之后Nginx会根据ip哈希、实例权重等规则将请求转发到对应服务器、对应端口的web服务上。

总结

直接让web服务运行在80端口是可行的,但是会存在80端不能复用和扩展不方便的问题,所以实际情况中我们通常不会直接在80端口运行web服务。

使用Nginx反向代理之后,同一台服务器上的多个web服务可以共用80端口对外提供服务,对用户比较友好,另外服务的横向扩展也会更方便。


萌新程序员成长日记


你说的当然可以,想搞明白你的疑问,必须先了解nginx是什么,作用是什么,什么是反向代理,作用是什么,等这些你了解了,自然明白为什么要用nginx做反向代理了。

nginx是什么?

nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

nginx服务器有什么作用?

1、反向代理

2、负载均衡

3、动静分离

什么叫反向代理?

反向代理:反向代理(ReverseProxy)是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,简单来说就是真实的服务器不能直接被外部网络访问,想要访问必须通过代理。

为什么要使用反向代理?

1、防止主服务器被恶意攻击


2、为负载均衡和动静分离提供实现支持


什么是负载均衡?负载均衡的作用是什么?

负载均衡就是将任务分摊到多个操作单元上进行执行。对于Nginx而言,就是将收到的访问请求分发给不同的Web服务器,以提高访问性能以及可靠性。负载均衡可以有效防止一个服务器宕机而导致服务停止。

当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此一来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。

什么是动静分离?动静分离的作用?

动静分离:运用nginx的反向代理功能分发请求:所有动态资源的请求交给应用服务器,而静态资源的请求(例如图片、视频、CSS、JavaScript文件等)则直接由Nginx返回到浏览器。

动静分离的作用:主要是nginx处理静态页面的效率远高于tomcat的处理能力,使用c语言开发的nginx对静态资源每秒的吞吐量是使用Java语言开发的tomcat的6倍,也远高于其它应用服务器。


好了上面大体解释了nginx是什么,反向代理是什么,希望可以对你有帮助


唯一胡小然


直接让web服务运行在80端,这当然没问题!

但是有两个前提条件:

1、你得有个运营商的固定IP地址,普通拨号宽带获取到的动态IP,是不行的,就算获取到的是互联网IP,80端口也是关闭的,并且运营商不会为你开通,所以要么选择独立IP的云服务器,要么选择运营商的专线接入网络



2、必须在工信部备案成功以后,才能开放80端口,才能运行你的WEB服务;



而采用nginx反向代理,不需要你有固定IP,甚至不需要你获取到互联网IP,哪怕是10或者100开头的“大内网”IP,也无所谓,照样能让你运行WEB服务。

当然了,如果是正规的、长久的WEB服务,那我强烈建议到工信部备案后开通。


IT狂人日志


不一定要用


DeepCode


负载均衡 ssl等等


Koca966


Django官方有一句话:我们在web编程框架方面是专家,但在web服务器方面,我们并不是。


爱农务


答案很简单。

一台服务器只能一个80端口,多个服务就冲突了。


分享到:


相關文章: