Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Nginx convert subdomain to path component without redirect

The idea is to take incoming requests to http://abc.example.com/... and rewrite them to http://example.com/abc/...

That's easy enough to do with a 301/302 redirect:

# rewrite via 301 Moved Permanently server {   listen 80;   server_name abc.example.com;   rewrite ^ $scheme://example.com/abc$request_uri permanent; } 

The trick is to do this URL change transparently to the client when abc.example.com and example.com point at the same Nginx instance.

Put differently, can Nginx serve the contents from example.com/abc/... when abc.example.com/... is requested and without another client round trip?

Starting Point Config

Nginx config that accomplishes the task with a 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 / {      # ...   } } 
like image 560
Sebastian Goodman Avatar asked Jan 24 '13 00:01

Sebastian Goodman


1 Answers

# abc.example.com server {   listen 80;   server_name abc.example.com;   location / {     proxy_pass http://127.0.0.1/abc$request_uri;     proxy_set_header Host example.com;   } } 
like image 189
KSARN Avatar answered Oct 11 '22 01:10

KSARN