回答
收藏
分享
举报
nginx与waf是什么关系?
提问于2020-05-08 16:15

浏览 9k

nginx与waf是什么关系?有哪位大佬深入浅出的讲下一下?

已修改于2023-03-17 18:39



写下您的回答
发表回答
全部回答(5)

按点赞数排序

按时间排序

waf全称是Web Application Firewall,所以,能处理HTTP协议的负载均衡软件,都可以作为Waf。然而,如果性能太差,这个Waf就很容易被轻微的流量攻击打挂,而Nginx性能非常优异,因此常用于Waf。另一方面,Waf需要解析HTTP协议,包括body中的表单信息,纯粹用C语言编写工作量非常大,因此OpenResty常常是Waf的首选。

赞同

5

回复举报

回答于2020-08-04 16:39



回复陶辉
回复

12月我会讲4节关于Nginx waf的公开课,每周4晚上8点到9点共1小时,你可以关注下

赞同

3

回复举报

回答于2020-12-01 10:27



回复陶辉
回复

赞同陶老师的说法,WAF是Web 防火墙,代表的是一系列可以处理HTTP协议的负载均衡软件,不限于Nginx、openresty;Nginx可以做WAF,是因为其面对高并发的场景性能优秀;

赞同

1

回复举报

回答于2020-12-04 09:50



回复Nginspher
回复

“手机壳防摔”这个比喻很棒。另外一种描述可以是近源端应用安全防护,也有一些专业模块提供WAF服务。

赞同

1

回复举报

回答于2020-11-27 13:47



回复熊平
回复

WAF是针对应用流量的专注防护,基于流量细分和场景的防护模式,好比iPhone手机里安装的自动安全监测的APP,监管所有的进出流量;

NGINX是针对代理和负载为主的场景,NGINX的安全能力是叠加在NGINX上的额外功能,好比iPhone手机加一个手机壳防摔。

赞同

1

回复举报

回答于2020-08-03 15:47



回复0学0
回复
提问者
南方
这家伙很懒还未留下介绍~
0
文章
2
问答
3
粉丝
相关问答

upstream中的2个server IP,当其中一个server异常后的重试。

点赞 0
浏览 7.1k

提供一些关于Node.js作为服务器的性能的信息。但是,需要注意的是,“最具性能”的服务器技术可能会因特定的用例、需求和应用程序的性质而异。




Node.js以其高性能而闻名,尤其是在处理并发请求方面。它建立在V8 JavaScript引擎上,该引擎针对执行JavaScript代码进行了高度优化。Node.js使用事件驱动的非阻塞I/O模型,使其能够同时有效地处理多个连接,而不会阻塞其他请求的执行。




Node.js的单线程事件循环架构具有可扩展性和高效的资源利用率,适用于具有大量并发连接的应用程序,如实时应用程序、聊天应用程序或流媒体服务。此外,通过npm(节点包管理器)提供的模块和包的大型生态系统为开发人员提供了广泛的工具,以增强其应用程序的性能和功能。




然而,必须考虑到Node.js可能不是所有场景的最佳选择。一些考虑因素包括:




1. CPU密集型任务:对于严重依赖CPU密集型的任务的应用程序来说,Node.js不是最佳选择,因为它在单个线程上运行,可能无法完全利用多个CPU核心。




2. 大文件上传/下载:Node.js可能不是处理大文件上传或下载的最具性能的选项,因为它的单线程特性可能会消耗大量内存。




3. 现有基础架构和专业技能:考虑团队中现有的基础架构、资源和专业技能。如果您的团队在不同的服务器技术方面拥有丰富的经验,那么利用这些专业知识可能比引入新技术更有效。




4. 特定使用案例:服务器技术的性能可能因应用程序的特定要求而异。评估应用程序的需求至关重要,例如处理繁重的流量、数据库集成或与特定协议的集成,并相应地选择服务器技术。




总之,虽然Node.js为某些用例提供了高性能,但在确定Node.js是否是服务器应用程序最具性能的选择之前,评估您的特定需求、工作负载特征和团队的专业知识是很重要的。

点赞 0
浏览 8.5k

要实现这个效果,用 NGINX 的 `ngx_http_limit_req_module` 这个模块也可以 就是:

1.  编辑 NGINX 配置文件:打开 NGINX 的配置文件,通常位于 `/etc/nginx/nginx.conf` 或 `/etc/nginx/sites-available/default`。(要是没有就安装一个安装 NGINX)

2. 添加限速配置:在 `server` 块中,添加以下限速配置:

```nginx

http {

   limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

   

   server {

       listen 80;

       server_name your_domain.com;


       location / {

           limit_req zone=one burst=1 nodelay;

           proxy_pass http://backend_server;  # 替换为实际的后端服务器地址

       }

   }

}

```


在上面的配置中,`limit_req_zone` 定义了一个请求限速的区域,`rate=1r/s` 表示每秒只允许一个请求通过。`limit_req` 指令用于在指定区域内进行请求限速。`burst=1` 表示允许短时间内的一个请求突发,`nodelay` 则确保不会延迟请求。

3. 重启 NGINX:保存配置文件并重启 NGINX 以生效:


```bash

sudo service nginx restart

```


这个时候 用户点击网页时,会在 20 秒内只能发出一个请求,其他请求将被限制。但是重点是,实际的延迟可能会因为客户端和服务器之间的网络延迟结果不一样,这个主要适用基于 NGINX 的反向代理配置。如果后端应用程序里使用了会话或者其他状态,就需要针对的调整,这样才不会影响应用程序的功能。

点赞 0
浏览 4k