2009-11-29 4 views
4

Je suis serveur/foo/bar/par voie de proxypass et je veux continuer à le faire. Cependant, je voudrais servir /foo/bar/baz.swf statiquement à partir de say /var/www/mystatic/baz.swf et ainsi de suite.Nginx emplacement, alias, réécrire, racine

j'espérais que je pouvais faire quelque chose comme

location /foo/bar/(.*) { 
     alias /var/www/mystatic/; 
    } 

    location/{ 
     proxy_pass ....; 
     ... 
    } 

et/foo/bar/irions au serveur d'application en /foo/bar/(.*) serait servi statiquement.

les docs disent que je ne peux pas faire cela et avoir besoin d'utiliser une combinaison de racine et réécrire: http://wiki.nginx.org/NginxHttpCoreModule

Ajoutant à la complication, je voudrais continuer à utiliser l'ancienne, non pris en charge 0.5.33. Toute aide serait grandement appréciée. Edit: à l'avenir, quelqu'un a suggéré d'utiliser la racine au lieu de l'alias. Mais, il ne semble pas que je puisse utiliser n'importe quelle regex sur la directive de localisation avec ma version? Ici, /foo/bar/baz.swf est servi par le proxy_pass! J'ai le fichier sur /var/www/foo/bar/baz.swf.

location /foo/bar/(.+) { 
     root /var/www/; 
    } 
+0

lol, pire question sur un badge SO. –

+0

Pourquoi ne pas simplement mettre 'location/foo/bar /(.+)'? – avetisk

Répondre

2

Vous pouvez le faire; mais c'est légèrement ésotérique. Essayez d'utiliser:

location ^~ /foo/bar { 
    alias /var/www/mystatic/; 
} 

location/{ 
    proxy_pass ....; 
} 

Ces options sont documentées sur le wiki http://wiki.nginx.org/NginxHttpCoreModule#location

+0

Si je fais cela/foo/bar/est servi par nginx .. si j'ajoute le slash final ... Je ne suis pas encore aligné correctement /foo/bar/baz.js –

+0

Fonctionne bien, merci! – clops

1
location = /foo/bar/baz.swf {} 

effacera clair toutes les options définies à /foo/bar/baz.swf. Donc, vous pouvez le laisser où il est comme les options de proxy ne seront pas utilisées.

1

Vous pouvez:

# mkdir /var/www/foo 
# mv /var/www/mystatic /var/www/foo/bar 

puis utilisez cette config:

location ~ ^/foo/bar/(.+) { 
    root /var/www/; 
} 
Questions connexes