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

Хитрость заключается в том, чтобы сделать это изменение прозрачно для клиента, когда 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 / { 
    # ...
  }
}

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;
  }
}
Другие вопросы по тегам