La documentazione di nginx indica che lo server_name directive supporta le espressioni regolari. Ho sbattuto la testa contro il muro cercando di far funzionare anche una regex banale.Reindirizzamento di un sottodominio con un'espressione regolare in nginx
voglio http://subdomain.mydomain.com per reindirizzare http://mydomain.com/subdomain
Ecco il mio codice.
server {
server_name "~^subdomain\.mydomain\.com$";
rewrite^http://mydomain.com/subdomain;
}
Inoltre, potenzialmente degno di nota. Più avanti nel file di configurazione di nginx c'è una regola:
server {
server_name *.mydomain.com
...
}
Cosa sto facendo male?
UPDATE:
E 'stato suggerito che io non uso regex per questo ... per offrire un po' più di chiarezza: l'espressione regolare banale era semplicemente a scopo di risoluzione dei problemi. La vera espressione regolare sarà più simile a ...
server {
server_name "~^.*(cvg|cincinnati)\.fakeairport(app)?\.(org|com)$";
rewrite^http://fakeairport.com/cincinnati;
}
server {
server_name "~^.*(lex|lexington)\.fakeairport(app)?\.(org|com)$";
rewrite^http://fakeairport.com/lexington;
}
quindi sarebbe preferibile usare espressioni regolari.
clueless su nginx, ma perché c'è una tilde all'inizio della regex? – sweaver2112
La tilde iniziale indica a nginx che questa è un'espressione regolare. – danott