내 PHP 사이트의 핫링크로부터 보호해야 합니다.? 어떻게 이것을 달성할 수 있나요 ?? 저는 nginx를 웹서버로 사용하고 있습니다.. 보려고 하면site.com/uploads/image.jpg로그인 없이도 브라우저에서 이미지를 볼 수 있습니다. 로그인 없이 다이렉트 폴더에 접근하는 것을 방지해야 합니다.
내 프로젝트 구조
site
-index.php
-uploads/image.jpg....
-css/
-js/
site.conf
server {
listen site.com;
server_name site.com;
root /home/vijo/Music/PHP/site;
index index.php index.html index.htm;
keepalive_timeout 70;
access_log /home/vijo/Music/PHP/site/log/access.log;
error_log /home/vijo/Music/PHP/site/log/error.log;
# Make site accessible from http://localhost/
location / {
try_files $uri $uri/ @rewrite;
expires max;
}
location @rewrite {
rewrite ^ /index.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
답변1
샘플 구성은 다음과 같습니다
.https://thebarton.org/prevent-hotlinking-nginx/
http://techgirlkb.guru/2017/08/preventing-site-mirroring-via-hotlinking/
location ~* \.(gif|png|jpe?g)$ {
expires 7d;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
# prevent hotlink
valid_referers none blocked ~.google. ~.bing. ~.yahoo. server_names ~($host);
if ($invalid_referer) {
rewrite (.*) /static/images/hotlink-denied.jpg redirect;
# drop the 'redirect' flag for redirect without URL change (internal rewrite)
}
}
# stop hotlink loop
location = /static/images/hotlink-denied.jpg { }