如何将请求从 Nginx 代理到 SSL 服务器

如何将请求从 Nginx 代理到 SSL 服务器

我的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,而上游使用)。

相关内容