С единичным редиректом всё понятно:
server {
listen 89.108.87.120:8881;
server_name admin.airbase.ru;
access_log /var/log/nginx/airbase.ru/admin-access.log combined;
root /var/www/admin.airbase.ru/htdocs;
location / {
proxy_pass http://admin.airbase.ru/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
И всё работает.
А что, если нужно так заредиректить два десятка доменов? Понятно, что два десятка таких записей - не наш метод.
Всевозможные комбинации if'ов не помогают, сцуко, оно почти никуда не может корректно вставиться.
В голову приходит дурацкая идея. Поместить список доменов в файл, скажем, vhosts-redirect-apache.list в виде:
.admin.airbase.ru admin.airbase.ru;
и заюзать его директивой map:
map $host $vhost_name {
hostnames;
include /etc/nginx/inc-bal/vhosts-redirect-apache.list;
}
server {
listen 89.108.87.120:8881;
server_name $vhost_name;
access_log /var/log/nginx/$vhost_name.log combined;
root /var/www/$vhost_name/htdocs;
location / {
proxy_pass http://admin.airbase.ru/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Но тут нас подстерегает облом (хотя, как раз, тут никакой ругани на конфиг нет) - директива server же парсится один раз, при старте сервера. Соответственно - не работает.
Как бы это всё заюзать, чтобы работало? :)
Более чудовищную документацию, чем по nginx на офсайте я мало где видел :-/