J'ai un site www.example.com
où je sers tout le contenu statique (par exemple, http.//www.example.com/image.jpg
) sur un CDN avec des URL telles que http://static.example.com/image.jpg
Une règle Apache 2 .htaccess interdit les renvois non vides, non-example.com
:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?example.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://example.cloudfront.net [NC]
RewriteRule \.(jpeg|jpg|gif|bmp|png|mp3)$ - [NC,F,L]
</IfModule>
Je reçois toujours d'énormes quantités de trafic d'un site Web très populaire qui utilise une sorte de fonctionnalité de "synthèse des informations" et des liens hypertexte vers www.example.com/image.jpg
(au lieu de static.example.com): cette ressource existe (pour des raisons de tirage Origin), mais l'URL n'est publiée nulle part.
En fait, servir autant de 403 entraîne l’abaissement de mon serveur.
Comment ce type de trafic de liens hypertextes peut-il être bloqué ou au moins, comment peut-il être redirigé vers le CDN avant qu'il n'atteigne Apache2 et ne le paralyse pas?
Il n’existe aucun moyen de transférer le www> cdn sans accéder à la demande sur le serveur principal, car ils vous lient.
Mon conseil est de ne pas rediriger 301 mais plutôt de simplement en sortir 404, espérons-le, ils arrêteront ainsi de vous lier à chaud.
Bien que cela génère du trafic sur votre serveur, il ne devrait pas être trop et vous devriez envisager la mise à niveau de votre hébergement en cas de problème.
Mon conseil d'exploration
Une autre option est que vous pouvez utiliser le fichier robots.txt sur votre CDN, mais encore une fois, il ne faut pas mépriser les liens chauds de nos jours, car j’ai déclaré qu’il était impossible d’utiliser rel = nofollow sur les images et que cela optimisait un peu votre référencement. Personnellement, j'appericate le trafic/liens et mettre à niveau mon serveur. Mais à part ça ... leur servir un bon vieux 404 s'ils lient à quelque chose qui n'existe pas - ils vont bientôt s'arrêter.
Sauf si vous avez vos images sur un sous-domaine, il n'y a aucun moyen de séparer le trafic avant qu'il n'atteigne votre serveur Web.
Un conseil de performance qui pourrait vous aider consiste à utiliser nginx et Apache sur le même serveur. Faites fonctionner Apache sur un port non standard. Faites en sorte que nginx soit exécuté sur le port 80 et inversez les demandes de proxy adressées à Apache. La règle de réécriture des images peut être placée sur le serveur nginx. Vous pouvez choisir cette configuration car nginx est plus rapide et plus léger qu’Apache et peut gérer un grand nombre de ces types simples de demandes. Voici un guide pour implémenter ceci: http://tumblr.intranation.com/post/766288369/using-nginx-reverse-proxy