Подтвердить что ты не робот

Nginx конвертирует субдомен в компонент пути без перенаправления

Идея состоит в том, чтобы принимать входящие запросы http://abc.example.com/... и переписывать их на http://example.com/abc/...

Это достаточно легко сделать с перенаправлением 301/302:

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

Хитрость заключается в том, чтобы сделать это изменение URL прозрачно клиентом, когда abc.example.com и example.com указывают на тот же экземпляр Nginx.

По-другому, может ли Nginx обслуживать содержимое из example.com/abc/..., когда запрашивается abc.example.com/..., и без другой поездки в оба конца клиента?

Конфигурация начальной точки

Конфигурация Nginx, которая выполняет задачу с помощью 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 / { 
    # ...
  }
}
4b9b3361

Ответ 1

# 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;
  }
}