Puncte:0

Instanța AWS EC2 din spatele AWS ELB nu poate obține adresa IP a clientului real

drapel hm

Sunt foarte nou cu setarea nginx. Aplicația mea API rulează într-o instanță EC2 care este creată automat de mediul meu AWS Elastic Beanstalk. Aplicația folosește Nginx, iar instanța se află în spatele echilibrului de încărcare ELB (clasic). Domeniul rutei 53 direcționează traficul către ELB.

Trimit pachetul de la Postman sau Packet Sender la acel domeniu, dar nu pot primi niciodată răspuns. După ce verificați jurnalul de erori nginx, găsiți că IP-ul clientului este afișat ca 10.0.2.63, dar nu adresa IP a PC-ului meu. Adresa mea IP reală 149.15x.1xx.2xx. Cred 10.0.2.63 este adresa IP VPC. Mai jos este jurnalul de erori nginx.

în timpul citirii protocolului PROXY, client: 10.0.2.63, server: 0.0.0.0:80

După înțelegerea mea, deoarece IP-ul clientului este adresa IP VPC, instanța EC2 nu poate trimite răspunsul la adresa IP reală a clientului (adresa IP a PC-ului meu), prin urmare, Postmand sau Packet Sender primește răspuns gol.

Am inteles corect? Cum pot lăsa instanța EC2 să primească adresa IP reală a clientului? Ca mai jos:

în timpul citirii protocolului PROXY, client: 149.15x.1xx.2xx, server: 0.0.0.0:80

Nu știu că este problema cu setarea AWS ELB sau cu setarea nginx.

Configurația nginx din instanța mea EC2 este:

fisiere:
/etc/nginx/conf.d/proxy.conf:
continut: |
  client_max_body_size 500M;
  server_names_hash_bucket_size 128;

  backend în amonte {
    server unix:///var/run/puma/my_app.sock;
  }

  Server {
    asculta 80 proxy_protocol;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    large_client_header_buffers 8 32k;

    set_real_ip_de la 10.0.0.0/8;
    real_ip_header X-Forwarded-For;

    Locație / {
      proxy_http_versiunea 1.1;
      proxy_set_header X-Real-IP $proxy_protocol_addr;
      proxy_set_header X-Forwarded-For $proxy_protocol_addr;
      proxy_set_header Gazdă $http_host;
      proxy_set_header X-NginX-Proxy true;
      proxy_buffers 8 32k;
      dimensiunea_buffer_proxy 64k;
      proxy_pass http://backend;
      proxy_redirect dezactivat;

      # Activează suportul WebSocket
      locație /v1/cablu {
        proxy_pass http://backend;
        proxy_http_versiunea 1.1;
        proxy_set_header Actualizați „websocket”;
        proxy_set_header Conexiune „Actualizare”;
        proxy_set_header X-Real-IP $proxy_protocol_addr;
        proxy_set_header X-Forwarded-For $proxy_protocol_addr;
      }
    }
  }
Puncte:1
drapel gp
Tim

Obțineți IP-ul clientului de la Antet X-Forwarded-For. Acest Postare pe blogul AWS vă oferă configurații pentru jurnalele Apache și Nginx. Iată-l pe Nginx

http {
  ...
  log_format principal „$remote_addr - $remote_user [$time_local] „$request” '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
  access_log /var/log/nginx/access.log principal;
}

Folosesc CloudFlare în fața serverului meu Nginx. Iată cum înlocuiesc IP-ul CloudFlare cu IP-ul client real.Înlocuiți „CF-Connecting-IP” cu „X-Forwarded-For” și înlocuiți IP CIDR cu CIDR-ul VPC-ului dvs.

set_real_ip_de la 173.245.48.0/20;
real_ip_header CF-Conectare-IP;
lei lei avatar
drapel hm
CIDR-ul VPC-ului meu este 10.0.0.0/16. Schimb configurația în set_real_ip_de la 10.0.0.0/16; real_ip_header X-Forwarded-For; Dar în jurnalul de erori, vedeți în continuare că adresa IP a clientului nu este adresa IP reală. ...în timp ce citesc protocolul PROXY, client: 10.0.2.63, server: 0.0.0.0:80 Cum pot obține afișarea adresei IP reale în client?
Tim avatar
drapel gp
Tim
Dacă nu merge, ar trebui să mă joc cu el ca să rezolv. Cheia este să obțineți IP-ul potrivit din anteturile pe care le-am descris mai sus, cum faceți acest lucru și unde merge este pentru dvs. să vă uitați. Sper că altcineva poate ajuta, nu mai fac grămadă cu Nginx.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.