Notre site est un référentiel d'images de toutes sortes. Chaque image a la notion d'une URL externe et d'une URL interne. Les URL externes sont vues par les clients et elles changent à mesure que nous expérimentons avec le SEO. Les URL internes sont des URL permanentes qui pointent vers notre service d'hébergement d'images. Nous utilisons notre application Ruby on Rails pour fournir la traduction de l'URL. Voici un exemple de demande:Redirection de proxy Nginx vers un autre URI
-------- ----- ------- ------- ------------
| | --eURL--> | | --> | | --> | | -iURL--> | |
|client| |CDN| |Nginx| | RoR | |Image Host|
| | <-------- | | <-- | | <-- | | <-IMG--- | |
-------- ----- ------- ------- ------------
L'architecture fonctionne, mais le streaming de l'image via RoR est inefficace. Je veux que Nginx fasse le proxy. C'est pour ça. L'architecture proposée ressemblerait à quelque chose comme ceci:
-------- ----- ------- -------
| | --eURL--> | | --> | | ------> | RoR |
|client| |CDN| |Nginx| <-????- | |
| | <-------- | | <-- | | -------
-------- ----- | | ------------
| | -iURL-> |Image Host|
| | <-IMG-- | |
------- ------------
Quelle réponse puis-je envoyer à Nginx pour avoir ce proxy les données? Cela ne me dérange pas d'ajouter des modules Nginx à mon infrastructure et bien sûr je suis ouvert à changer mon nginx.conf.
X-Sendfile est la chose la plus proche que j'ai trouvée, mais qui permet seulement la diffusion à partir du système de fichiers local. Peut-être qu'il y a un autre en-tête de réponse HTTP obscur ou un code d'état que je ne connais pas.
Ceci est une excellente solution, une petite note cependant ... vous n'avez pas besoin de construire la variable pour faire la redirection, vous pouvez simplement faire: proxy_set_pass http: // $ 1/$ 2; –
Je suppose que c'est fait pour des raisons de lisibilité et de maintenabilité. Pour éviter les WTF possibles du prochain administrateur qui lira cette config. – Konstantin