je suis d'accord avec rikh. Si vous souhaitez que les images soient diffusées à partir d'un serveur Web différent, servez-les sur un autre serveur Web. Par exemple:
<IMG src="images/Brett.jpg">
devient
<IMG src="http://brettnesbitt.akamia-technologies.com/images/Brett.jpg">
Tout type de équilibreur de charge va encore alimenter l'image de la conduite du serveur web, qui est ce que vous essayez d'éviter.
Je sais, bien sûr, ce que vous voulez vraiment.Qu'est-ce que vous voulez vraiment est pour toute demande comme:
GET images/Brett.jpg HTTP/1.1
pour obtenir automatiquement convertis en:
HTTP/1.1 307 Temporary Redirect
Location: http://brettnesbitt.akamia-technologies.com/images/Brett.jpg
cette façon, vous ne devez pas faire un travail, à l'exception de copier les images à l'autre web -serveur.
Que je ne sais vraiment pas comment faire.
En utilisant l'expression « NAT », il implique que le pare-feu/routeur reçoit des requêtes HTTP, et que vous souhaitez transmettre la demande à un serveur interne différent si la requête HTTP était pour les fichiers image.
Cela soulève alors la question de ce que vous essayez réellement d'économiser. Quel que soit le serveur Web interne utilisé par la requête HTTP, les données doivent toujours passer par le canal du pare-feu/routeur. La raison pour laquelle je l'évoque est que le scénario courant lorsque quelqu'un veut servir des images d'un serveur différent est parce qu'il veut séparer le contenu à coût élevé de la bande passante, principalement statique, à faible coût CPU de sa logique actuelle. Utiliser uniquement NAT pour réécrire le paquet et l'envoyer à un serveur différent ne fonctionnera pas vers ce problème commun.
L'autre raison peut-être parce que les images ne sont pas du contenu statique sur votre système, et une demande de
GET images/Brett.jpg HTTP/1.1
construit en fait une image à la volée, avec un coût élevé CPU, ou seulement en utilisant des données disponible (ie base de données SQL Server) sur ServerB.
Si tel est le cas, alors je continue à utiliser un nom de serveur différent sur la demande d'image:
GET http://www.brettsoft.com/default.aspx HTTP/1.1
GET http://imageserver.brettsoft.com/images/Brett.jpg HTTP/1.1
Je comprends ce que vous êtes espérant, avec l'inspection des paquets réseau pour passer outre la règle NAT et l'envoyer à un autre serveur - je n'ai jamais vu une telle chose qui peut le faire.
Il semble plus "proxy-ish", où le proxy web le fait. (ie pfSense et m0n0wall ne peuvent pas le faire)
Ce qui conduit alors à une sorte de solution que nous avons utilisée une fois: un serveur web personnalisé qui analyse la requête, fait la demande appropriée sur un serveur interne, et binaire écrit le réponse au client.
Cette douleur dans la solution de cul a été insisté sur un «consultant en sécurité», qui croit apparemment en security through obscurity.
Je sais qu'IIS ne peut pas faire de telles choses pour vous-même - je ne connais pas d'autres produits de serveur Web.
je viens de demander autour, et apparemment, si vous vouliez écrire un module de noyau personnalisé pour vous Linux routeur basé, vous pourriez avoir inspecter les paquets et prendre les mesures appropriées. Un tel module pourrait exister. Apparemment, il y a beaucoup d'autres modules open-source à utiliser comme point de départ.
Mais je préfère me tirer une balle dans la tête.
"Au niveau de l'apache - en utilisant des règles de réécriture?" Si c'est au niveau d'Apache, vous êtes déjà sur le serveur web, donc le rediriger va quand même charger votre serveur web un peu. Ou avez-vous une couche proxy inverse Apache? Pouvez-vous décrire votre architecture? (y compris les loadbalancers que vous avez) –
Actuellement, nous équilibrons la charge avec ldirectord sur l'un ou l'autre serveur web, avec un pare-feu iptables (boîte dédiée) devant les deux. (pas de reverse-proxy) – Brent
Bonjour Brent, L'avez-vous fait? Quelle est l'augmentation de performance que cela fait? Cela vaut-il la peine de le faire? – Krunal