nginx location rewrite _vh_
location / {
rewrite ^/(.*) /VirtualHostBase/http/$server_name:80/my_plone_site/VirtualHostRoot/$1 break;
proxy_pass http://127.0.0.1:8080;
}
con la rewrite classica, per esempio, il dominio my_domain.com viene indirizzato sul sito plone my_plone_site
| rewrite | riscrivi | |
| ^/(.*) | qualsiasi cosa (viene aggiunta alla radice del dominio) | |
| /VirtualHostBase/http/$server_name:80 | quello che scrivo dopo il VirtualHostBase è la radice dell'URL (http://my_domain.com) | |
| /my_plone_site/VirtualHostRoot/ | quello che scrivo prima di VirtualHostRoot è la radice del percorso plone (/my_plone_site) | |
| 1$ | aggiungi "qualsiasi cosa" |
se per una qualsiasi ragione voglio raggiungere il sito plone utilizzando un percorso dell'URL, che non rispecchia un percorso plone reale, si può utilizzare la proprietà _vh_ del Virtual Host Monster di Zope:
... /my_plone_site/VirtualHostRoot/_vh_whatever/1$
whatever viene aggiunto all'URL, ma non è parte del percorso plone (non viene 'attraversato')
se in più, la radice del dominio (/) punta a qualcos'altro (un altro sito plone, cgi ...) e quindi in nginx devo utilizzare una differente location /whatever, per raggiungere il sito plone con un URL del tipo http://my_domain.com/wathever/ va utilizzata la seguente rewrite-rule:
location ^~ /whatever {
rewrite ^/whatever/(.*) /VirtualHostBase/http/$server_name:80/my_plone_site/VirtualHostRoot/_vh_whatever/$1 break;
proxy_pass http://127.0.0.1:8080;
}poichè la location viene aggiunta da nginx al percorso plone (1$), da non confondere con il whatever di _vh_, questa deve essere catturata all'inizio della rewrite (^/whatever/(.*))
Seguici!