Сохранение заголовков во время перезаписи NGINX

Я пытаюсь настроить прокси NGINX для перенаправления всех запросов на один из двух серверов на основе содержимого аргумент строки запроса. По сути:

https://my.site.com/api/...&server=a

должен перенаправлять на

https://a.site.com/api/...&server=a

и

https://my.site.com/api/...&server=b

должны перенаправлять на

https://b.site.com/api/...& server = b

Похоже, у меня есть конфигурация, которая выполняет основную работу по переписыванию имени хоста и сохранению строки запроса без изменений:

error_log /dev/stdout info;
worker_processes 1;

events {
    worker_connections 1024;
    accept_mutex off;
}

http {
    access_log /dev/stdout combined;
    sendfile on;

    server {
        listen 443 ssl;
        server_name         $hostname;
        ssl_certificate     /etc/ssl/nginx.crt;
        ssl_certificate_key /etc/ssl/nginx.key;
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         HIGH:!aNULL:!MD5;

        location ~ /api/ {
            if ($arg_server !~ "^(a|b)$") { return 404; }
            rewrite ^ $scheme://my.site.$arg_server.com$uri;
        }
    }
}

Однако я не могу получить все заголовки в исходном запросе, чтобы пережить путешествие - - заголовок Authorization , например, похоже, не доходит до https: // [server] .site.com / api / ...

Насколько я понимаю, все заголовки были сохраняется по умолчанию? Разве это не правда?

1
задан 17 July 2017 в 18:12
1 ответ

Я смог сделать то, что хотел, избавившись от rewrite и заменив его на proxy_pass и резолвер записи:

    location /api/ {
        if ($arg_server !~ "^(a|b)$") { return 404; }

        resolver dns.site.com;
        proxy_pass $schemes://my.site.$arg_server.com$request_uri;
    }
2
ответ дан 3 December 2019 в 20:20

Теги

Похожие вопросы