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