在Ubuntu上使用Nginx进行防盗链,可以通过配置Nginx的ngx_http_referer_module模块来实现。以下是具体的步骤:
如果你还没有安装Nginx,可以使用以下命令进行安装:
sudo apt update
sudo apt install nginx
编辑Nginx的配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/sites-available/default。你可以创建一个新的配置文件或直接编辑现有的。
valid_referers指令在server块中添加以下配置:
server {
listen 80;
server_name example.com;
location /protected/ {
valid_referers none blocked server_names example.com www.example.com;
if ($invalid_referer) {
return 403 "Forbidden";
}
root /var/www/html;
}
}
在这个例子中:
valid_referers none blocked server_names example.com www.example.com; 允许来自none(直接访问)、blocked(被阻止的)和指定域名的引用。if ($invalid_referer) 检查引用是否有效,如果无效则返回403 Forbidden。add_header和X-Frame-Options如果你希望更严格地控制防盗链,可以结合使用add_header和X-Frame-Options:
server {
listen 80;
server_name example.com;
location /protected/ {
valid_referers none blocked server_names example.com www.example.com;
if ($invalid_referer) {
return 403 "Forbidden";
}
add_header X-Frame-Options "SAMEORIGIN";
root /var/www/html;
}
}
在这个例子中,X-Frame-Options "SAMEORIGIN" 防止页面被嵌入到其他域名的<iframe>中。
在保存配置文件后,运行以下命令测试Nginx配置是否正确:
sudo nginx -t
如果配置没有问题,你会看到类似以下的输出:
nginx: configuration file /etc/nginx/nginx.conf test is successful
最后,重新加载Nginx以应用新的配置:
sudo systemctl reload nginx
valid_referers指令。通过以上步骤,你可以在Ubuntu上使用Nginx实现基本的防盗链功能。