我的curl
请求如下:
curl --header "Authorization: Basic BASE_64" https://example.com --tlsv1 -k
(我需要明确提供TLS
并跳过验证)
并且成功了。我想将其设置nginx
为中间件并处理远程服务器的身份验证。
location / {
proxy_pass {{ remote_server }};
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Authorization "Basic {{ base64_token }}";
}
不幸的是,使用这些设置后,我得到了 403 禁止。我所做的与请求有何不同curl
?
我的error.log
节目:
2014/12/20 02:40:12 [error] 15676#0: *13 connect() failed (111: Connection refused) while connecting to upstream, client: MY_OWN_IP, server: _, request: "GET /MY_REQUESTED_ENDPOINT HTTP/1.1", upstream: "https://MY_REMOTE_UPSTREAM", host: "MY_SERVER_IP"
2014/12/20 02:40:24 [info] 15676#0: *15 client timed out (110: Connection timed out) while waiting for request, client: MY_OWN_IP, server: 0.0.0.0:80
非常重要的一点是,MY_UPSTREAM
只接受来自的连接MY_SERVER_UP
,这就是我创建这个中间件的原因。
答案1
最终的工作配置是
location / {
proxy_pass {{ remote_server }};
proxy_set_header Authorization "Basic {{ base64_token }}";
}
我们不应该传递$host
(我们希望我们的中间件成为主机)或$scheme
(我在中间件上不使用 SSL,而上游使用)。