2010-04-14 5 views
1

J'ai une configuration où mon nginx est en tête avec apache + PHP derrière.nginx + ssi + accès uri distant ne fonctionne pas

Mon application PHP cache certaines pages dans memcache auxquelles nginx accède directement, sauf certaines parties dynamiques qui sont construites en utilisant SSI dans Nginx.

Le premier problème que j'ai eu était nginx n'a pas essayé d'utiliser memcache pour ssi URI.

<!--# include virtual="/myuser" --> 

Donc, je me suis dit que si je le forçais à utiliser une URL complète, il le ferait.

<!--# include virtual="http://www.example.com/myuser" --> 

Mais dans le fichier logs (les deux nginx et apache) Je peux voir qu'une barre oblique a été ajouté au début de l'url

http ssi filter "/http://www.example.com/myuser" 

Dans le code source du module SSI Je vois PREFIX qui semble être ajouté, mais je peux vraiment dire si je peux le désactiver.

Quelqu'un at-il eu ce problème? Version Nginx: 0.7.62 sur Ubuntu Karmic 64bits

Merci beaucoup

Répondre

15

Vous peut configurer nginx pour inclure les URL à distance malgré vous ne pouvez pas les consulter directement dans les instructions SSI. Dans la configuration du site, créez l'emplacement avec le chemin d'accès local et l'emplacement distant nommé qui pointe où vous voulez. Par exemple:

 
server { 
.... 
    location /remote { 
    proxy_pass @long_haul; # or use "try_files" to provide fallback 
    } 

    location @long_haul { 
    proxy_pass http://porno.com; 
    } 
.... 
} 

et utilisation html servis comprennent la directive qui fait référence chemin/distance:

 
    <!--# include virtual="/remote/rest-of-url&and=parameters" --> 

Notez que vous pouvez personnaliser l'URL qui est passé plus avec des variables et expressions rationnelles. Par exemple:

 
    location ~/remote(.+) { 
    proxy_pass @long_haul$1?$args; 
    } 
+0

C'est plutôt génial. Vous pouvez l'utiliser en combinaison avec un journal spécialisé pour faire un service de liaison sortante très simple avec des analyses. –

+0

Mais vous devriez vous rappeler que toute la page aller-retour à distance ira via votre nginx. C'est à dire que nginx devrait contenir un état attendant que l'URL distante soit récupérée. Par conséquent, je ne suggérerais pas une telle méthode pour les sites lourdement chargés (il suffit de considérer ce qui se passe si l'URL distante prendrait beaucoup de temps à charger). –

Questions connexes