Nous avons un client avec un site fonctionnant sur Apache. Récemment, le site a vu une charge accrue et comme un espace d'arrêt, nous voulons déplacer tout le contenu statique du site vers des domaines sans cookies, par exemple http://static.thedomain.com
.
L'application n'est pas bien comprise. Donc, pour donner aux développeurs le temps de modifier le code pour pointer leurs liens vers le serveur de contenu statique ( http://static.thedomain.com
), j'ai pensé à mandater le site via nginx et à réécrire les réponses sortantes de telle sorte que les liens vers /images/...
soient réécrits comme http://static.thedomain.com/images/...
.
Ainsi, par exemple, dans la réponse d'Apache à nginx, il y a un blob Headers + HTML. Dans le code HTML renvoyé par Apache, nous avons des <img>
balises qui ressemblent à:
<img src="/images/someimage.png" />
Je veux transformer cela en:
<img src="http://static.thedomain.com/images/someimage.png" />
De sorte que le navigateur lors de la réception de la page HTML demande alors les images directement au serveur de contenu statique.
Est-ce possible avec nginx (ou HAProxy)?
J'ai jeté un coup d'œil rapide dans les documents, mais rien ne m'a sauté dessus, sauf la réécriture des URL entrantes.
Il est préférable d'utiliser la fonction proxy et de récupérer le contenu à l'endroit approprié, au lieu de réécrire des URL et de renvoyer des redirections vers le navigateur.
Un bon exemple de proxy de contenu ressemble à ceci :
Dans cette configuration, au lieu de rediriger les demandes vers
static.domain.com
le navigateur et de s'attendre à ce que le navigateur fasse une autre demande, nginx sert simplement le fichier à partir du chemin local approprié. Si la demande est dynamique, le proxy entre en jeu et récupère la réponse d'un serveur Apache (local ou distant) sans que l'utilisateur final ne le sache.J'espère que ça aide
la source
proxy_pass
défini le serveur Apache, par exempleproxy_pass http://172.16.3.1:80
? c'est-à-dire que nous déplaçons l'adresse IP publique du site vers le serveur nginx / CDN.