С единичным редиректом всё понятно:
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 на офсайте я мало где видел :-/




