502 Gateway inválido no Nginx

2

Atualmente, temos um aplicativo da web criado para ser executado em uma estrutura angular no Nginx em execução no Ubuntu 1.10.3. O log de erros para uma tentativa de acessar o site é:

30364#30364: 1000 worker_connections are not enough
30364#30364: *5179370 recv() failed (104: Connection reset by peer) while 
reading response header from upstream server:mysite request: "GET / 
HTTP/1.1" upstream: myip:80 host:mysite
30364#30364: 1000 worker_connections are not enough
30364#30364: *5179454 no live upstreams while connecting to upstream

Meu Nginx.conf:

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
        worker_connections 1000;
}

http{
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;ssl_protocols TLSv1 TLSv1.1 
    TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

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

    gzip on;
    gzip_disable "msie6";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

Meu default.conf:

server {
       listen 80 default_server;
       listen [::]:80 default_server;

       listen 443 ssl; 
       ssl_certificate /etc/letsencrypt/live/mysite/fullchain.pem; 
       ssl_certificate_key /etc/letsencrypt/live/mysite/privkey.pem; 

       root /home/admin_user/myroot;

       large_client_header_buffers 4 32k;
       index index.html index.htm index.nginx-debian.html;

       server_name myserver;

       add_header Strict-Transport-Security max-age=500;

     location / {
            proxy_pass http://mysite;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; 
            proxy_set_header X-Forwarded-Proto https; 
      }
}

A estrutura do arquivo do meu diretório raiz é ao longo dessas linhas. Traços denotam níveis.
-root
  --app
    --- modelos de controladores exibições de estilos de serviços
  --bower_components
  --config
  --data
  --data.xlsx
  --file.jpg
  --index.html
  --node_modules
  --package.json
  --Procfile
  --Public
    --- app.js img
  --server.js

Isso não é uma visão completa da estrutura do arquivo, mas achei que pode ser útil.

    
por ServerAmateur 04.12.2017 / 22:31

2 respostas

3

Essa configuração espera que você tenha um envio de dados para mysite . Por exemplo:

upstream mysite {
    server 127.0.0.1:8080;
}

Parece que seria um servidor Node.js? Ele precisa estar em execução e escutando, no exemplo acima, a porta 8080 .

    
por 04.12.2017 / 22:57
3

Você configurou o nginx de tal forma que ele está tentando se conectar a si mesmo como upstream, em vez de ao Node.js.

     location / {
            proxy_pass http://mysite;

Onde mysite resolve para o mesmo host.

Nesse cenário, o nginx se conecta repetidamente a si mesmo tentando atender a solicitação, faz isso 1.000 vezes e fica sem funcionários.

Você tem duas possibilidades para resolver o problema:

  1. Defina um upstream denominado mysite , que faz referência ao seu servidor Node.js em execução. Por exemplo:

    upstream mysite {
        server [::1]:3000;
    }
    
  2. Especifique o URL upstream diretamente em proxy_pass :

            proxy_pass http://[::1]:3000;
    
por 04.12.2017 / 23:57

Tags