L'idea è quella di prendere le richieste in arrivo per http://abc.example.com/...
e riscrivere a http://example.com/abc/...
Nginx convertire sottodominio al componente percorso senza reindirizzare
Questo è abbastanza facile da fare con un 301/302 reindirizzamento:
# rewrite via 301 Moved Permanently
server {
listen 80;
server_name abc.example.com;
rewrite^$scheme://example.com/abc$request_uri permanent;
}
Il trucco è quello di fare questo cambio URL in modo trasparente al client quando abc.example.com
e example.com
punto alla stessa istanza Nginx.
In altre parole, Nginx può servire il contenuto da example.com/abc/...
quando abc.example.com/...
viene richiesta e senza un altro client di andata e ritorno?
Punto di partenza Config
Nginx config che compie l'operazione con un 301:
# abc.example.com
server {
listen 80;
server_name abc.example.com;
rewrite^$scheme://example.com/abc$request_uri permanent;
}
# example.com
server {
listen 80;
server_name example.com;
location/{
# ...
}
}
Funziona fantastico avere Nginx procura a se stesso. Host modificato su 127.0.0.1 perché altrimenti Nginx deve risolvere il nome host (un intero problema separato). Aggiunto '$ request_uri' in modo che il percorso venga aggiunto alla richiesta proxy. –
Funziona perfettamente. Stai attento alle risorse statiche che potrebbero richiedere 404. –
@KJPrima qual è il problema con le risorse 404? –