我想将nginx配置为反向代理,以将HTTP请求转发到外部Cloud-API。这个nginx 但是我收到了Connection拒绝错误。
29 09:19:02 [error] 7#7: *2 connect() failed (111: Connection refused) while connecting to upstream, client: x.x.x.x, server: 10.0.2.2, request: "GET /apiv1/endpoint HTTP/1.1", upstream: "https://0.0.0.0:443/apiv1/endpoint", host: "localhost:8080"
当然我用0.0.0.0替换了上面的ip(外部云)
但我认为这就是问题所在。 nginx解析了云主机的ip,并用ip地址替换了上游url。但是如果没有主机名,cloudhost就不知道将站点上的请求重定向到哪里。
猜测....因为我无法使用curl或postman将请求发送到端点(使用ip作为主机)。但是使用url它可以工作。
我的nginx.conf
upstream cloudapi {
here-comes-the-cloud-url.com:443;
}
server {
listen 8080 default_server;
server_name localhost; #
location ^~ /apiv1/ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
proxy_pass https://cloudapi$uri;
}
}
答案 0 :(得分:2)
您应该为后端启用SNI。
从nginx 1.7.0开始,这是可能的: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_server_name
proxy_ssl_server_name on;