原文:http://floss.zoomquiet.io/data/20110312151223/index.html
很多时候,服务不是被用户流量击垮,而是被大量的对你没有任何贡献的盗链击倒,所以作为一个web站点防盗链是首先要考虑的问题,目前来说,对于各个 web服务器,简单的防盗链方法多数是做rewrite,判断referer是否有效,当然高端的伪造referer的情况不在这里讨论。
在apache下,防盗链的方法有很多,你可以看看apache的日志,有多少是外部直接referer过来的,有可能比内部引用还多,尤其是图片和下载类站点更加明显。在apache下,最简单的防盗链使用类似这个形式:
SetEnvIfNoCase Referer "^http://www.google.com" local_ref=1
SetEnvIfNoCase Referer "^http://google.com" local_ref=1
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
或者在apache下使用RewriteEngine on,然后使用RewriteCond {HTTP_REFERER} 来定义,这些都是防止比较低级的盗链,如果是面对迅雷或者其他的话,这个远远不够,但是不是这里讨论的范围。
对于nginx而言,本身也有简单的防盗链模块ngx_http_referer_module,配置比较简单,定义文件类型:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
valid_referers none blocked server_names *.163.com 163.com baidu.com;
if ($invalid_referer) {return 403;}
expires 30d;
}
具体的可以参考这里:http://wiki.nginx.org//NginxHttpLimitZoneModule,同时还有一个第三的防盗链相关模块,ngx_http_accesskey_module:
location /download {
accesskey on;
accesskey_hashmethod md5;
accesskey_arg "key";
accesskey_signature "mypass$remote_addr";
}
具体的使用方法:http://wiki.nginx.org//NginxHttpAccessKeyModule
对于带宽限制,apache可以动态编译一些模块进去,mod_evasive20.so和mod_bw.so都是对防止简单的dos和带宽限制而存在 的,而对于nginx,可以使用nginx的标准模块ngx_http_limit_zone_module,进行会话的并发连接数控制:
http {
limit_zone one $binary_remote_addr 10m;
#定义一个叫“one”的记录区,总容量为 10M,以变量 $binary_remote_addr 作为会话的判断基准(即一个地址一个会话)
...
server {
...
location /attachments/ {
limit_conn one 1;
limit_rate 100k;
}
# 限制 /attachments/ 目录下,一个会话只能进行一个连接。超过一个,则返回503。imit_rate 来控制该目录的下载速度。
}
这是简单的nginx的方案,更高级的应用应该是在客户端类型或者根据日志分析后,针对具体问题做文章,例如对$http_user_agent的特殊内容进行匹配,然后返回503。
为什么要返回503?如果直接返回403,有可能被下载工具发现,403的状态被认为被禁止了,然后进行调整继续作案。而返回一个503,对服务器来说影响不大,只占用一个nginx的线程而已。
相关推荐
Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route (a)客户端首次发起访问请求,nginx接收后,发现...
h265在相同的视频质量下,数据压缩率比h264提高了大约50%,这意味着用户可以享受更高清的视频,同时降低带宽消耗。 Nginx-HTTP-FLV-Module-Master模块的实现,意味着Nginx现在能够处理h265编码的FLV流,这为使用...
【标题】"nginx-upstream-jvm-route-1.15" 涉及的核心知识点是Nginx的upstream模块与JVM路由的整合,特别针对Nginx 1.15版本。这个项目旨在解决在配置Nginx时遇到的特定错误提示“nginx: [emerg] invalid parameter ...
`nginx` 和 `nginx.pid` 可能是用于启动和停止 Nginx 服务的脚本和进程 ID 文件。 7. **源代码** `src` 目录包含了 Nginx 和 http-flv 模块的核心源代码。如果你需要自定义或调试模块功能,可以在这里进行。 8. *...
Nginx是一个高性能的HTTP和反向代理服务器,广泛用于Web服务器领域,尤其在处理静态内容和高并发场景下表现出色。Nginx-http-flv-module是针对Nginx的一个扩展模块,它允许Nginx支持HTTP实时流传输协议...
Nginx是一款高性能的Web服务器和反向代理服务器,广泛应用于高并发场景,因其轻量级、高效稳定而受到青睐。1.19.3是Nginx的一个具体版本,通常每个新版本都会包含错误修复、性能提升以及新功能的添加。 `nginx-...
在windows 7 64位 环境下使用nginx的nginx-http-flv-module搭建flv视频流播放所有的安装包,参考:https://blog.csdn.net/qq_33071429/article/details/102628008
2. **RTMP Support in Nginx**:通过安装和配置nginx-rtmp-module,Nginx可以作为RTMP服务器接收和分发流媒体内容。RTMP协议适合实时内容,如直播事件,因为它的延迟低。Nginx可以接受来自摄像机、编码器或其他RTMP...
nginx-http-flv-module-master, 因为RTMP,HLS 都会存在这样那样的缺点,为了更好的解决延时问题、拉流兼容性问题,所以我们准备用flv.js 进行拉流。 对应的nginx组件
Nginx是一款高性能的Web服务器和反向代理服务器,以其高效的并发处理能力和轻量级的内存占用而著名。它广泛用于静态资源服务、动态内容转发和负载均衡等场景。 **HTTP FLV Module**是Nginx的一个扩展模块,主要用于...
nginx sticky是nginx的module,可以实现基于cookie的负载均衡。 下载后,在编译安装nginx时,用--add-module选项,指到sticky所在目录。类似命令如下: ./configure --prefix=/usr/local/nginx-1.6.0 --add-module=...
Nginx以其高效的事件驱动模型和非阻塞I/O机制,在资源消耗上具有显著优势。 **Nginx-RTMP模块** Nginx-RTMP是Nginx的一个扩展模块,由Adobe Systems开发,用于支持Real-Time Messaging Protocol (RTMP)。RTMP是一...
请注意,这个基本配置仅用于演示,实际应用中可能需要考虑更多的安全和性能因素,比如限制 IP 地址、设置防盗链策略、使用缓存等。 总之,Nginx Upload Module 2.3.0 提供了一种有效的方式来管理和处理大文件上传,...
在IT行业中,Nginx是一款广泛应用的高性能反向代理服务器,因其高效稳定和灵活的配置而备受青睐。这里我们关注的是一个包含特定模块的Nginx配置:`nginx1.16`,`nginx-upstream-check-module-master` 和 `nginx-...
Nginx是一款高性能的Web服务器和反向代理服务器,它以其轻量级、高并发和稳定性著称。Nginx-1.19.6是Nginx的一个版本,发布于2020年11月27日。这个版本可能包含了性能优化、错误修复以及新的特性和功能。Nginx的更新...
nginx_tcp_proxy_module-master.zip
3. 安全性:Nginx可以进行访问控制,限制非法请求,保护文件系统的安全。 4. 易于扩展:随着业务增长,可以轻松添加新的FastDFS存储节点,Nginx也能无缝增加新的服务器实例。 5. 日志管理:Nginx的日志功能可以...
总结来说,"Nginx-GUI-For-Windows-x64-v1.6.zip"提供的工具是针对Nginx服务器的可视化管理解决方案,它降低了运维的复杂度,提高了工作效率,使得对Nginx的管理和监控变得更加直观和便捷。对于那些不熟悉命令行操作...
"nginx-prometheus-exporter"是连接Nginx和Prometheus的关键桥梁,将Nginx的内部指标转换为Prometheus可以理解的格式。 这个名为"nginx-prometheus-exporter-0.11.0-linux-386.tar.gz"的压缩包,包含了用于在32位...