Puncte:0

Eroare 404 de Websocket proxy Nginx revere

drapel cn

Lucrez cu doi Nginx unul în spatele celuilalt.

Infrastructura noastră este așa infrastructura

Problemă

Am probleme cu conexiunile websocket, când trimit cererea către Nginx Proxy pass returnează întotdeauna 404, dar când trimit cererea către NGINX final, funcționează bine.

Conectați-vă în FINAL NGINX
# când solicitarea nu trece prin NGINX PROXY PASS
# este în regulă
<SOME-CLIENT-IP> - - [30/Sep/2021:13:46:02 +0000] „GET /cablu HTTP/1.1” 101 22120 „-” „Mozilla/5.0 (Linux; Android 9; SM-A105M ) AppleWebKit/537.36 (KHTML, ca Gecko) Chrome/94.0.4606.61 Mobile Safari/537.36"

# când solicitarea trece prin NGINX PROXY PASS
# este gresit
<IP-NGINX-PROXY-PASS> - - [30/Sep/2021:13:46:09 +0000] „GET /cablu HTTP/1.0” 301 14 „-” „Mozilla/5.0 (Linux; Android 11; SM -A505G) AppleWebKit/537.36 (KHTML, cum ar fi Gecko) Chrome/89.0.4389.105 Mobile Safari/537.36"

Acest lucru se întâmplă numai cu conexiunile Websockets endpoint /cablu.

NGINX Proxy pass conf

Server {
  nume_server domeniu.com;

  Locație / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Gazdă $gazdă;
    proxy_set_header X-Forwarded-Ssl activat; # Opțional
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_set_header X-Forwarded-Host $gazdă;
    proxy_redirect dezactivat;
    proxy_pass https://<IP-FINAL-NGINX>;
  }

  locație /cablu {
    proxy_pass http://<IP-FINAL-NGINX>;
    proxy_http_versiunea 1.1;
    proxy_set_header Actualizare $http_upgrade;
    proxy_set_header Conexiune „upgrade”;
    proxy_set_header Gazdă $gazdă;
    
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Gazdă $gazdă;
    proxy_set_header X-Real-IP $adresă_la distanță;
    proxy_set_header X-Forwarded-Proto https;
    proxy_redirect dezactivat;
   }

  asculta [::]:443 ssl http2 ipv6only=on;
  asculta 443 ssl http2; # gestionat de Certbot
  ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; # gestionat de Certbot
  ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem; # gestionat de Certbot
  
  dacă ($gazdă != „domeniu.com”) {
    întoarce 404;
  }
}

Server {
  nume_server www.domeniu.com;
  
  asculta 443 ssl http2; # gestionat de Certbot
    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; # gestionat de Certbot
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem; # gestionat de Certbot
  
  returnează 301 example.com$request_uri;
}

Server {
  nume_server domeniu.com;
  asculta 80;

  returnează 301 https://<IP-FINAL-NGINX>$request_uri;
}

Server {
  nume_server domeniu.com;

  Locație / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Gazdă $gazdă;
    proxy_set_header X-Forwarded-Ssl activat; # Opțional
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_set_header X-Forwarded-Host $gazdă;
    proxy_redirect dezactivat;
    proxy_pass https://<IP-FINAL-NGINX>;
  }

  locație /cablu {
    proxy_pass http://<IP-FINAL-NGINX>;
    proxy_http_versiunea 1.1;
    proxy_set_header Actualizare $http_upgrade;
    proxy_set_header Conexiune „upgrade”;
    proxy_set_header Gazdă $gazdă;
    
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Gazdă $gazdă;
    proxy_set_header X-Real-IP $adresă_la distanță;
    proxy_set_header X-Forwarded-Proto https;
    proxy_redirect dezactivat;
   }

  asculta [::]:31117 ssl http2 ipv6only=on;
  asculta 31117 ssl http2; # gestionat de Certbot
  ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; # gestionat de Certbot
  ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem; # gestionat de Certbot
  
  dacă ($gazdă != „domeniu.com”) {
    întoarce 404;
  }
}

Server {
  nume_server www.domeniu.com;
  
  asculta 31117 ssl http2; # gestionat de Certbot
    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; # gestionat de Certbot
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem; # gestionat de Certbot
  
  returnează 301 example.com$request_uri;
}


Server {
  nume_server domeniu.com;
  asculta 30723;

  returnează 301 https://<IP-FINAL-NGINX>$request_uri;
}

NGINX final - aceasta se conectează cu aplicația finală

în amonte aplicația mea {
  server unix:/var/www/myapp/current/tmp/sockets/puma.sock fail_timeout=30s;
}

Server {
  nume_server domeniu.com;

  Locație / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Gazdă $http_host;
    proxy_set_header X-Forwarded-Ssl activat; # Opțional
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_set_header X-Forwarded-Host $gazdă;
    proxy_redirect dezactivat;
    proxy_pass http://myapp;
  }

   locație /cablu {
    # acest punct final „/cablu” se ocupă de conexiunile websocket
    proxy_pass http://myapp;
    proxy_http_versiunea 1.1;
    proxy_set_header Actualizare $http_upgrade;
    proxy_set_header Conexiune „upgrade”;
    proxy_set_header Gazdă $http_host;
    
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Gazdă $http_host;
    proxy_set_header X-Real-IP $adresă_la distanță;
    proxy_set_header X-Forwarded-Proto https;
    proxy_redirect dezactivat;
   }
 
  locație ~ ^/(assets|img|static|favicon)/ {
    root /var/www/nulinga/current/public;

    gzip_static activat;
    expira max;
    add_header Cache-Control public;
  }
  
  asculta [::]:443 ssl http2 ipv6only=on;
  asculta 443 ssl http2; # gestionat de Certbot
    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; # gestionat de Certbot
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem; # gestionat de Certbot
  includ /etc/letsencrypt/options-ssl-nginx.conf; # gestionat de Certbot
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # gestionat de Certbot

  dacă ($gazdă != „domeniu.com”) {
    întoarce 404;
  }
  
  pagina_eroare 502 503 504 =503 /503.html;
  error_page 404 =404 /404.html;
  
  locație = /503.html {
    root /var/www/myapp/current/public;
    permite totul;
    intern;
  }

  locație = /404.html {
    root /var/www/myapp/current/public;
    permite totul;
    intern;
  }


}

Server {
  nume_server www.domeniu.com;
  
  asculta 443 ssl http2; # gestionat de Certbot
    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; # gestionat de Certbot
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem; # gestionat de Certbot
  includ /etc/letsencrypt/options-ssl-nginx.conf; # gestionat de Certbot
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # gestionat de Certbot

  returnează 301 example.com$request_uri;


}

Server {
  nume_server domeniu.com www.domeniu.com;
  asculta 80;

  returnează 301 example.com$request_uri;
}

drapel ro
ai gasit cauza exacta?

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.