Сохранение заголовков во время перезаписи 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 ответ
Я смог сделать то, что хотел достичь, избавившись от rewrite
и заменить его на proxy_pass
а также resolver
записей:
location /api/ {
if ($arg_server !~ "^(a|b)$") { return 404; }
resolver dns.site.com;
proxy_pass $schemes://my.site.$arg_server.com$request_uri;
}