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

由网友 上进青山笨鱼 提供的答案:

当然可以啊,直接在80端口上跑web服务也是可以的,不过这样一来,你就得面对一些风险和挑战。比如说:

1. 安全性问题:如果你的服务是公开的,那么任何人都可以通过80端口来访问它。这样的话,你就需要考虑如何保护你的服务免受攻击。

2. 性能问题:如果你的服务需要处理大量的请求,那么直接在80端口上运行可能会导致性能下降。这时候,你可以使用nginx反向代理来将请求分发到不同的服务器上,从而提高性能。

3. 可靠性问题:如果你的服务需要高可用性,那么直接在80端口上运行可能会导致单点故障。这时候,你可以使用nginx反向代理来实现负载均衡和故障转移,从而提高服务的可靠性。

由网友 testerzhang 提供的答案:

其实现在估计很少人会用80端口部署服务了,起码都是443端HTTPS服务了,因为HTTPS相对更安全。

但是这不影响这个问题的解答,下面我以个人的一些看法说明下。

一个服务器只有一个常用的端口

我们都知道你只买了一台公网服务器,默认80端口是HTTP服务,443端口是HTTPS服务。

而现在很多时候,微信、网站搜索引擎,默认都是用这些端口进行正常处理,当你有多个服务要对外开放,你如果A服务已经占用了80端口,那么B服务就不可以再占用80端口。

而你采用Nginx服务直接占用80或者443端口,那么我们根据Nginx的规则配置,就可以设置如下规则:

访问url路径/api 走A服务,访问url路径/admin 走B服务。

Nginx高性能

熟悉Nginx性能的程序员,都知道Nginx的性能之高,这里就不展开说。

因为有些编程语言框架,比如Flask,本身处理web请求就性能不高,通过Nginx可以提前处理web请求,而Flask就可以更多关注业务本身的逻辑。

Nginx负载均衡

当你的web服务后台可以多实例部署,这时候你说的web服务直接运行80端口,那就不能支持多台实例。

而通过nginx,就可以指向两台甚至多台实例的后端服务,而且可以设置策略进行负载请求。

比如负载后端两个web服务,A机器性能配置强,那么我们就可以分配更多的请求到A机器。

B机器性能一般,那么我们就可以减少请求到这台机器。

Nginx安全性

因为有了Nginx服务器在前面进行处理请求,用户根本不知道后端是用什么语言进行处理,减少后端暴露的几率。

不过由于使用Nginx的人很多,Nginx的漏洞也是备受关注,所以要及时关注Nginx的漏洞和最新稳定版本升级。

这里提供一个检测Nginx稳定版本的视频解说:https://www.ixigua.com/6832886164081345038/ ,有兴趣的可以看看。

Nginx资源消耗

使用Nginx服务可以占用低的内存消耗,同时能支持高并发连接,何乐而不为。

如果觉得回答能解决到一些问题,可以关注@testerzhang,我会不定期发布一些相关技术文章和视频。

由网友 萌新程序员成长日记 提供的答案:

让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端口对外提供服务,对用户比较友好,另外服务的横向扩展也会更方便。

由网友 网络系统技艺者 提供的答案:

将 Web 服务器直接运行在 80 端口时,客户端可以直接访问服务器,也就是说,Web 服务器和客户端之间的连接是直接访问的。但这样做存在一些问题:

1、安全性问题:Web 服务器直接对公共网络开放,可能会受到各种恶意攻击,如 DDoS、SQL 注入等。

2、静态资源访问效率问题:静态资源(如图片、CSS、JavaScript 文件等)访问频率很高,如果 Web 服务器直接提供这些静态资源,会使 Web 服务器的负载非常高,影响整个系统的响应速度。

3、动态内容处理效率问题:如果 Web 服务器直接提供动态内容(如 PHP 程序),也会使 Web 服务器的负载非常高,导致系统响应速度缓慢。

为了解决这些问题,我们可以使用反向代理服务器来代理 Web 服务器。反向代理服务器作为 Web 服务器和客户端之间的中间层,可以提供以下优势:

1、安全性增强:反向代理服务器可以对 Web 服务器进行访问限制、流量控制、黑名单过滤等,从而提高系统安全性。

2、负载均衡:反向代理服务器可以将请求分发到多个 Web 服务器上,从而减轻单个 Web 服务器的负载,提高整个系统的吞吐量和可用性。

3、静态资源缓存:反向代理服务器可以缓存静态资源,如图片、CSS、JavaScript 文件等,从而减轻 Web 服务器的负担,加快页面加载速度。

4、动态内容加速:反向代理服务器可以对动态内容进行缓存,从而提高动态内容的处理效率,加快页面响应速度。

5、URL 管理:反向代理服务器可以通过 URL 重写等技术来统一管理多个 Web 服务器的 URL,从而简化网站管理和维护。

6、SSL 加速:反向代理服务器可以提供 SSL 加速,从而加快 SSL 加密和解密速度,提高系统的响应速度。

因此,使用反向代理服务器是一个可行的解决方案,能够提高 Web 服务的安全性、性能和可用性。而 Nginx 作为一种轻量级、高性能的反向代理服务器,被广泛应用于各种生产环境中。

注:图片来源于网络

以上就是我今天分享的内容,如果觉得还可以,就点赞+收藏+关注+转发吧!也许未来某个时间里你会用的到。

由网友 iscto 提供的答案:

有可能一台服务器会部署多个应用服务,比如会员服务8081端口,订单服务8082端口,搜索服务8083端口,但是服务器只有一个80或者443,那么就需要nginx或者apache做反向代理,根据不同的规则或者前缀把相应的请求转发到服务端口进行处理后再返回,在多台服务器下,比如a服务器是会员服务,b服务器是订单服务,c服务器是搜索服务,那么也可以通过一台nginx做服务网关,根据不同的规则或者前缀转发请求到不同的服务器上,相比作为一个web服务器来说,nginx更多的时候是用做服务网关的作用,当然nginx也可以用作负载均衡来使用,负载均衡核心还是服务网关和请求代理转发,还有大多数服务都是https的,这就需要证书,如果比如直接用java程序80端口作为外部服务,配置https证书也是个很复杂的事情,当然,这并不是最重要的原因,最重要的原因概括起来就是,服务网关,请求转发,尤其是现在微服务大行于天下的时候,nginx显得尤为重要和必要

由网友 急速马力快de源码控 提供的答案:

一个非常好的问题。我是工作多年的Web应用架构师,来回答一下这个问题。欢迎关注我,了解更多IT专业知识。


一,可以让Web服务直接运行在80端口

Web服务开发测试时,启动项目后,打开浏览器就能访问。部署到生产环境服务器时,也可以这样简单直接。如果只是一个Demo演示,并不需要考虑太多运营的问题。


二,生产环境中使用Nginx反向代理

对于商业应用来说,需要考虑运维,比如安全管理、热发布、集群扩展等,实现这些功能就需要nginx的帮助了。

Nginx是一个轻量级的Web反向代理服务,具有高并发、运行稳定的优点,配置简单,并且支持负载均衡。

1,设置堡垒机,保障服务器安全

不像Demo演示或者简单的Web应用,商业系统都需要使用多台服务器。为了避免泄露不必要的信息,只将一台堡垒机暴露在外面,其他服务器都隐藏起来,降低受到攻击的安全隐患。

2,方便管理维护,支持热发布

功能发布、系统升级等维护工作贯穿整个商业应用的生命周期,为了做到不停机,比如采用灰度发布策略,先将准备更新发布的机器从Nginx反向代理配置中移走,待完成后再加回来,使得整个部署过程不影响系统运行。

3,支持集群扩展和负载均衡

现在Web应用的架构和功能越来越复杂,多层架构、数据中台、异步任务调度,等等。为了应对高峰期的用户量和并发量,经常需要对负载高的节点进行集群化部署和自动伸缩,Ngnix根据策略配置,对请求进行分发和调度。

中大型应用的负载均衡经常使用云服务的LoadBalance。

由网友 技术猿小黄 提供的答案:

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端口的问题,还有利于后期的架构优化演变。

|技术猿小黄

|来源于网络

创作不易,看完点个赞关注一下再走呗。如果有什么想法或建议,欢迎在评论区留言

由网友 AI文章创作者 提供的答案:

直接让Web服务运行在80端口是可以的,但使用Nginx反向代理有以下几个优势:

服务器的复用性:假设你的服务器上需要运行多个应用,都希望用80端口访问,不用Nginx是做不到的,只能起一个80端口,所以如果不用Nginx的话,你需要有多台服务器,提供给你的每一个需要80端口的应用。

负载均衡:当你的Web应用需要处理大量请求时,Nginx可以将流量分发到多个后端服务器,有效地分担负载。这可以提高整个应用程序的性能和稳定性。

安全性:Nginx可以作为一个安全屏障,将恶意请求、攻击流量拦截在反向代理层,保护后端Web服务器。这有助于提高整个系统的安全性。

高性能:Nginx是高性能的Web服务器,具有优秀的并发处理能力。通过Nginx反向代理,可以显著提高Web服务的响应速度和承载能力。

SSL终端:Nginx可以作为SSL终端,处理客户端与服务器之间的加密通信。这样,后端Web服务器不需要处理加密解密操作,降低了其负担。

缓存:Nginx可以缓存静态资源(如图片、CSS、JavaScript等),从而减轻后端服务器的负担,提高网站的访问速度。

灵活性:Nginx具有强大的配置功能,可以方便地实现URL重写、负载均衡策略调整、动态扩展等操作。

综上所述,虽然可以直接让Web服务运行在80端口,但使用Nginx反向代理能带来许多优势,尤其是在面临高并发、安全性要求高、需要缓存等复杂场景时。

由网友 fmt阳 提供的答案:

直接运行在80端口完全没有问题,在不指定端口号,不配置SSL服务的情况下 默认运行的就是80端口,默认端口不需要在url中指定。例如 http://exp.com/your_router

如果你指定8084端口那么上面的url就会变成http://exp.com:8084/your_router 很明显,不美观。好了,再回到你的问题,你问题中指的nginx 方向代理,应该是指反向代理443端口。一般来说,会配置80端口强制跳转到443端口,只有在web配置SSL服务时即https才会这样做,而443 是默认端口,你也可以指定其他端口 但url中同样要指定,形如https://exp.com:8085/your_router,同样,不美观。

由网友 运维小邹 提供的答案:

首先,现在常用地web服务器主要是apache和nginx,web服务可以直接运行在80端口的。

再说说为什么很多web服务用nginx反向代理,像我的话,主要是使用反向代理主要是更安全和更方便管理。

1.安全:反向代理可以隐藏真实的服务器。而且容易扩展,不管有多少台机器,永远只需要把nginx暴露在外面,减少安全隐患。

2.如果机器少的话,一个机器上有多个web服务的话,你只能有一个弄成80,其他的就不能再是80端口了。但是用nginx做反向代理就没有这些问题,其他web服务器端口可以随意,然后让nginx通过80端口统一代理。而且所有服务都走nginx也更加好管理。

部分文章源于互联网收集,不代表默子网络立场,版权归原作者所有,如若转载,请注明出处:https://www.html369.cn/8635.html