Решение проблемы с доменом Nginx
У меня был прокси-сервер, который перенаправляет связь с некоторыми API на стороне клиента через https. Когда я использую конфигурацию с установленной восходящей переменной (proxy_pass $upstream_endpoint$request_uri;), разрешение DNS для этого домена (динамическое изменение IP-адреса) работает хорошо, но я получаю ответ 403 неавторизованным.
Когда я использую конфигурацию без апстрима (proxy_pass https://api-test.example.com/api/
), укажите непосредственно на домен клиента, он работает хорошо, я получаю ответ 200, но DNS-преобразователь больше не работает..
Конфигурация Nginx:
location /api-test.example.com/api/ {
resolver 10.100.10.1 valid=5s;
set $upstream_endpoint https://api-test.example.com;
proxy_pass $upstream_endpoint$request_uri;
#proxy_pass https://api-test.example.com/api/;
proxy_ssl_name api-test.example.com;
proxy_ssl_server_name on;
proxy_set_header Host api-test.example.com;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
1 ответ
Добавляя URI к proxy_pass
В заявлении, запрошенный URI переписывается перед передачей в обратном направлении. Смотрите этот документ для деталей.
Так что URI /api-test.example.com/api/foo
переписан /api/foo
,
Вы можете достичь того же поведения с rewrite...break
заявление. Смотрите этот документ для деталей.
location /api-test.example.com/api/ {
rewrite ^/api-test.example.com(.*)$ $1 break;
set $upstream_endpoint https://api-test.example.com;
proxy_pass $upstream_endpoint;
...
}