在Debian系统中使用cxImage实现图片防盗链,可以按照以下步骤进行:
首先,确保你已经安装了cxImage库。你可以使用以下命令来安装:
sudo apt-get update
sudo apt-get install libcximage-dev
创建一个PHP文件(例如anti_hotlinking.php),用于检查请求的来源并决定是否允许访问图片。
<?php
// 设置允许访问的域名
$allowed_domains = array('http://example.com', 'https://example.com');
// 获取请求的Referer头
$referer = $_SERVER['HTTP_REFERER'];
// 检查Referer是否在允许的域名列表中
$is_allowed = false;
foreach ($allowed_domains as $domain) {
if (strpos($referer, $domain) !== false) {
$is_allowed = true;
break;
}
}
// 如果Referer不在允许的域名列表中,则返回403 Forbidden
if (!$is_allowed) {
header('HTTP/1.1 403 Forbidden');
echo 'Access denied';
exit;
}
// 如果Referer在允许的域名列表中,则继续处理请求
// 这里可以包含实际的图片处理代码,例如使用cxImage加载和输出图片
// 例如:
// $image = new CXImage();
// $image->Load('path/to/image.jpg');
// $image->Output('image.jpg', 'JPEG');
?>
根据你使用的Web服务器,配置防盗链中间件。
在Nginx配置文件中添加以下内容:
server {
listen 80;
server_name example.com;
location /images/ {
try_files $uri $uri/ @anti_hotlinking;
}
location @anti_hotlinking {
internal;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME /path/to/anti_hotlinking.php;
include fastcgi_params;
}
}
在Apache配置文件中添加以下内容:
<VirtualHost *:80>
ServerName example.com
<Directory "/path/to/images">
Options FollowSymLinks
AllowOverride None
Require all granted
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [F,L]
</Directory>
</VirtualHost>
确保你的配置文件已经生效,并测试防盗链功能。你可以尝试从不同的域名访问图片,确保只有允许的域名可以访问图片。
通过以上步骤,你可以在Debian系统中使用cxImage实现图片防盗链功能。