在LNMP(Linux, Nginx, MySQL, PHP)环境中,设置图片防盗链是一种常见的需求,通过配置Nginx的防盗链机制,可以防止其他网站直接链接到你的图片资源,从而减少带宽消耗和提高安全性,以下是详细的步骤:
修改Nginx配置文件
假设你的网站根目录是/var/www
,并且你有一个子目录images
用来存放图片,你需要编辑你的Nginx配置文件,通常位于/etc/nginx/nginx.conf
或/etc/nginx/sites-available/default
。
示例配置:
server { listen 80; server_name yourdomain.com; root /var/www; index index.php index.html index.htm; location /images/ { alias /var/www/images/; # 防盗链设置 valid_referers none blocked yourdomain.com www.yourdomain.com; if ($invalid_referer) { return 403; } } location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 根据实际PHP版本修改 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location / { try_files $uri $uri/ =404; } }
location /images/: 指定处理/images/
路径下的请求。
alias /var/www/images/: 将/images/
映射到服务器上的/var/www/images/
目录。
valid_referers: 定义允许的Referer头。none
表示不允许任何Referer,blocked
表示只允许没有Referer头的请求,yourdomain.com
和www.yourdomain.com
表示仅允许来自这两个域名的Referer。
if ($invalid_referer): 如果Referer无效,返回403禁止访问。
重新加载Nginx配置
保存配置文件后,需要重新加载Nginx配置以使更改生效:
sudo nginx -s reload
测试防盗链功能
你可以使用浏览器开发者工具或者curl命令来测试防盗链功能是否生效。
curl -I -e "Referer: http://example.com" "http://yourdomain.com/images/test.jpg"
如果Referer不符合规则,应该返回403 Forbidden状态码。
注意事项
确保正确设置了Referer头,以便合法请求不会受到阻碍。
如果你有多个域名,确保所有合法的域名都在valid_referers
指令中列出。
定期检查日志文件,确保防盗链配置正常工作。
通过以上步骤,你可以在LNMP环境中成功设置图片防盗链,保护你的资源不被滥用。