本文目录:
- 1、网站nginx配置限制单个IP访问频率,预防DDOS恶意攻击
- 2、Nginx安全防护
- 3、nginx 防盗链简单配置
网站nginx配置限制单个IP访问频率,预防DDOS恶意攻击
对于网站来说,尤其是流量较大出名的网站,经常遇到攻击,如DDOS攻击等,虽然有些第三方,如Cloudflare可以挡,但对于动态网站PHP来说,只能挡一部分。这时候需要对于单个IP恶意攻击做出限流。nginx的两个模块可以限流。
nginx两个限流模块:
连接频率限制,ngx_http_limit_conn_module:官方文档:
请求频率限制,ngx_http_limit_req_module:官方文档:
网上理论很多,根据名字可知:
当然还是看不懂的话,通俗点讲(相对于时间比较):
比如秒杀,抢购,连接频率限制和请求频率限制应该配合使用 , 使用连接频率限制同一IP同时只能有3个连接, 再使用请求频率限制对于同一ip的请求,限制平均速率为5个请求/秒 , 这样比单独只使用一种限制要好很多。
比如只使用请求频率限制 , 可以精确地限制同一ip1秒只能发起5次的http请求 , 假如同一ip1秒内发起了100000次请求 , 虽然限制了只有5次成功响应 , 但是其他的99995次的请求TCP握手建立http连接是不是会消耗服务器资源? 所以还需要配合使用。
1、limit_req_zone,示例:
2、limit_conn_zone,示例:
3、搭配一起使用
1、ab命令
ab是apache自带的压力测试工具。一般不用额外安装,ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。
测试命令
2、wrk命令
需自己安装,地址:
安装
测试命令:
还有其他压测工具,自行研究
Nginx安全防护
隐藏Nginx后端服务X-Powered-By头
Nginx SSL协议的加密策略进行加固
1.执行系统命令passwd -S nginx来查看锁定状态
出现Password locked证明锁定成功
如:nginx LK ….. (Password locked.)或nginx L ….
2.默认符合,修改后才有(默认已符合)
3.执行系统命令passwd -l nginx进行锁定
Nginx进程启动账号状态,降低被攻击概率
Nginx后端服务指定的Header隐藏状态
Nginx服务的Banner隐藏状态
把控配置文件权限以抵御外来攻击
nginx 防盗链简单配置
通常我们不希望自己网站的图片、文件等被一些未经允许的网站应用,那么我们可以在nginx里做一些配置来阻止这些网站的访问。
我们将使用nginx的valid_referers 指令来做防盗链,下面来简单介绍下valid_referers指令。
语法:
valid_referers [none|blocked|server_names] …
默认值:none
使用环境:server,location
该指令会根据Referer Header头的内容分配一个值为0或1给变量 $invalid_referer 。如果Referer Header头不符合valid_referers指令设置的有效Referer,变量$invalid_referer将被设置为1.
该指令的参数可以为下面的内容:
none:表示无Referer值的情况。
blocked:表示Referer值被防火墙进行伪装。
server_names:表示一个或多个主机名称。从Nginx 0.5.33版本开始,server_names中可以使用通配符”*”号。
简单介绍完后小伙伴们可能会想为啥要用这个参数做防盗链呢?
我们知道HTTP Referer是Header的一部分,当浏览器向Web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器借此可以获得一些信息用于处理。下面我们在浏览器里面打开几个页面来体验下这个参数
下面我们准备一张图片test.jpg,和两台服务器,注意笔者的nginx版本是1.17的,不同的版本可能配置稍微有点不同。
服务器A:47.93.121.3
服务器B:175.24.110.203
笔者将图片test.php 放到服务器A上,并能够正常访问
接着我们在服务器B上写一个test.htm来引用这张图片:
访问看下:
能够正常访问。
但是我们希望服务器B在没有经过允许的情况下不能访问这张图片,那我们就需要配置下服务器A的nginx
那我们再在服务器B上看还能不能访问到这张图片:
发现已经不能访问这张图片,那我们再看看服务器A能不能访问:
本文来源:https://www.yuntue.com/post/117207.html | 云服务器网,转载请注明出处!