Nginxreferer:请求头控制模块详细说明以及案例
参考资料
Nginx的referer
请求头控制模块主要用于控制请求的Referer
头字段,通常用于防盗链、限制访问来源等场景。该模块可以通过配置来允许或拒绝特定来源的请求。
模块说明
ngx_http_referer_module:这是Nginx内置的模块,用于处理
Referer
头字段。它可以通过配置来检查请求的Referer
头,并根据配置的规则来决定是否允许请求。valid_referers:这是该模块的核心指令,用于定义合法的
Referer
来源。可以配置多个来源,支持通配符和正则表达式。$invalid_referer:这是一个内置变量,当请求的
Referer
头不符合valid_referers
配置时,该变量的值为1
,否则为0
。
配置案例
以下是一个简单的Nginx配置案例,用于实现防盗链功能:
server { listen 80; server_name example.com; location /images/ { # 定义合法的Referer来源 valid_referers none blocked example.com *.example.com; # 如果Referer不合法,返回403 Forbidden if ($invalid_referer) { return 403; } # 允许访问图片资源 root /var/www/html; } }
配置解析
**valid_referers none blocked example.com *.example.com;**:
none
:允许没有Referer
头的请求。blocked
:允许Referer
头被防火墙或代理服务器修改的请求。example.com
:允许来自example.com
的请求。*.example.com
:允许来自example.com
子域名的请求。if ($invalid_referer) { return 403; }:
如果
Referer
头不符合valid_referers
的配置,返回403 Forbidden状态码,拒绝访问。
其他案例
允许特定IP访问:
server { listen 80; server_name example.com; location /images/ { valid_referers 192.168.1.100; if ($invalid_referer) { return 403; } root /var/www/html; } }
使用正则表达式匹配Referer:
server { listen 80; server_name example.com; location /images/ { valid_referers ~^(www\.)?example\.com$; if ($invalid_referer) { return 403; } root /var/www/html; } }
通过这些配置,Nginx可以根据Referer
头字段来控制请求的访问权限,从而实现防盗链等功能。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。