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

  1. 安全性:通过使用 Nginx 反向代理,可以将 Web 服务器隐藏在内部网络中,只向外部暴露 Nginx 服务器的端口。这样可以提高安全性,因为直接将 Web 服务器暴露在公共网络上可能会面临各种网络攻击和漏洞利用的风险。Nginx 可以充当一个安全的代理服务器,过滤恶意请求并提供额外的安全层。
  2. 负载均衡:Nginx 反向代理可以实现负载均衡,将流量分发到多个后端服务器上。当有多台 Web 服务器提供相同的服务时,Nginx 可以根据预设的算法将请求分发到不同的服务器上,从而平衡服务器的负载。这可以提高系统的性能和可靠性,防止单个服务器过载或故障导致服务不可用。
  3. 缓存和静态文件服务:Nginx 也可以用作缓存服务器,将经常请求的静态内容(如图片、CSS 和 JavaScript 文件)缓存在内存中,从而减轻后端服务器的负载并提高响应速度。Nginx 的静态文件服务能力高效且可靠,适合处理大量的静态文件请求。
  4. SSL/TLS 终结:如果需要启用安全套接层(SSL)或传输层安全性(TLS)协议,Nginx 可以作为 SSL/TLS 终结点,负责处理加密和解密的过程。这样,后端的 Web 服务器可以专注于处理非加密的 HTTP 请求,而无需处理复杂的 SSL/TLS 过程,提高了性能和效率。

总而言之,使用 Nginx 反向代理可以提供额外的安全性、负载均衡、缓存和静态文件服务等功能,使整个系统更加健壮和高效。它是一种常见的部署模式,被广泛用于实际生产环境中的 Web 服务。




其实现在估计很少人会用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,我会不定期发布一些相关技术文章和视频。




你说的当然可以,想搞明白你的疑问,必须先了解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端口是可行的,但是会存在一些问题。

问题一:其他项目只能使用非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 作为一种轻量级、高性能的反向代理服务器,被广泛应用于各种生产环境中。

注:图片来源于网络

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

展开阅读全文

页面更新:2024-04-24

标签:负载   缓存   动静   端口   静态   安全性   实例   性能   作用   速度   服务器   文件   内容   用户   财经   资源

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top