Как остановить nginx от разрешения апстрима до ip - PullRequest
0 голосов
/ 29 мая 2018

Я хочу настроить nginx в качестве обратного прокси-сервера для пересылки HTTP-запросов на внешний Cloud-API.Это nginx Но я получил ошибку соединения отказано.

 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"

Конечно, я заменил IP выше (внешнего облака) на 0.0.0.0

Но я думаю, что это проблема.nginx разрешает IP-адрес облачного хоста и заменяет исходящий URL-адрес на IP-адрес.Но без имени хоста облакохост не знает, куда перенаправить запрос на своем сайте.

Просто угадать .... Потому что я не могу запустить запрос к конечной точке (с 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;
  }
 }

1 Ответ

0 голосов
/ 30 мая 2018

Вы должны включить 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;

...