HTTP-запрос от локального хоста к локальному хосту приводит к ECONNREFUSED - PullRequest
0 голосов
/ 03 апреля 2020

Я использую два http-сервера в docker (используя docker -compose), которые обслуживают несколько конечных точек, используя express.

При попытке запроса с сервера nr1 на сервер nr2.


Я получаю сообщение об ошибке:

webnode_1           | { Error: connect ECONNREFUSED 127.0.0.1:80
webnode_1           |     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1088:14)
webnode_1           |   errno: 'ECONNREFUSED',
webnode_1           |   code: 'ECONNREFUSED',
webnode_1           |   syscall: 'connect',
webnode_1           |   address: '127.0.0.1',
webnode_1           |   port: 80 }

Я использую библиотеку request для выполнения запроса GET


версия NODE для исходного сервера : узел: 11.14.0

версия NODE целевого сервера : узел: 11.14.0

исходный сервер : http://test.local

целевой сервер : http://api.test.local/api/exchange

порт доступа к целевому серверу : 8080


Мы также используем nginx для конфигурации целевого сервера.

worker_processes 8;
error_log stderr;
user nginx;
worker_rlimit_nofile 100000;

events {
  use epoll;
  worker_connections 20096;
  multi_accept on;
}

http {
  set_real_ip_from <ip>/21;
  set_real_ip_from <ip>/20;
  set_real_ip_from <ip>/22;
  set_real_ip_from <ip>/22;
  set_real_ip_from <ip>/22;
  set_real_ip_from <ip>/18;
  set_real_ip_from <ip>/18;
  set_real_ip_from <ip>/20;
  set_real_ip_from <ip>/20;
  set_real_ip_from <ip>/22;
  set_real_ip_from <ip>/17;
  set_real_ip_from <ip>/15;
  set_real_ip_from <ip>/12;
  set_real_ip_from <ip>/13;
  set_real_ip_from <ip>/22;
  set_real_ip_from 2400:cb00::/32;
  set_real_ip_from 2606:4700::/32;
  set_real_ip_from 2803:f800::/32;
  set_real_ip_from 2405:b500::/32;
  set_real_ip_from 2405:8100::/32;
  real_ip_header CF-Connecting-IP;

  proxy_cache_path  /etc/nginx/cache levels=1:2 keys_zone=one:1000m max_size=3000m inactive=2m;
  proxy_cache_lock on;
  proxy_cache_lock_age 3s;
  proxy_cache_lock_timeout 3s;
  proxy_cache_methods GET POST;
  proxy_cache_use_stale timeout;
  proxy_temp_path /var/tmp;
  proxy_cache_valid 200 302 10m;
  proxy_cache_valid 404 15s;
  proxy_cache_valid 500 5s;

  include mime.types;
  default_type application/octet-stream;
  open_file_cache max=20000 inactive=20s;
  open_file_cache_valid 30s;
  open_file_cache_min_uses 1;
  open_file_cache_errors on;

  upstream apinode {
    server 127.0.0.1:8080;
    server 127.0.0.1:8080 max_fails=5 backup;
    keepalive 128;
  }

  access_log off;
  sendfile off;
  tcp_nopush on;
  tcp_nodelay on;
  keepalive_timeout 15;
  reset_timedout_connection on;
  client_max_body_size 2k;
  client_body_buffer_size 2k;
  large_client_header_buffers 2 1k;
  client_header_buffer_size 2k;
  client_body_timeout 5s;
  client_header_timeout 5s;
  send_timeout 3;

  server {
    listen 0.0.0.0:8080;
    server_name api.g4g.local;

    location / {
      proxy_redirect off;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;
      proxy_set_header Connection "";
      proxy_http_version 1.1;
      proxy_cache one;
      proxy_cache_key apik$request_uri$scheme;
      proxy_pass http://apinode;
    }
  }

  server {
    listen 0.0.0.0:80;
    server_name api.test.in;

    location / {
      proxy_redirect off;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;
      proxy_set_header Connection "";
      proxy_http_version 1.1;
      proxy_cache one;
      proxy_cache_key apik$request_uri$scheme;
      proxy_pass http://apinode;
    }
  }

  server {
    listen 0.0.0.0:80 default_server;
    server_name _;
    return 403;
  }
}

Целевой сервер доступен из браузера и локального скрипта, но не из контейнера исходного сервера

...