Ainda outro erro 502 com NginX

1

Estou tentando colocar um servidor @ home no lugar com alguns serviços básicos. Todos os serviços são executados em uma VM dedicada. Cada VM está hospedada no vSphere 5.5. Até agora eu tenho:

  • Debian wheezy com nginx usado como um proxy reverso: 192.168.1.12
  • Debian wheezy com nodeJS usado como servidor webapp: 192.168.1.43
    • 192.168.1.43:3000 = > servidor web http que faz um redirecionamento em 192.168.1.43:3001
    • 192.168.1.43:3001 = > https servidor da web que fornece o serviço
  • Debian wheezy com madsonic instalado: 192.168.1.35
    • Como dito na documentação eu coloquei --https-port = 443 na configuração para habilitar o acesso https

Eu uso o nginx para ter coisas assim:

  • myapp.mydomaine.com = > vá para nodejs @ 192.168.1.43
  • music.mydomain.com = > vá para madsonic @ 192.168.1.35

Eu segui um tutorial e editei o arquivo "padrão" em / etc / nginx / sites-enabled. Aqui está como parece:

server {
 listen 80;
 server_name myapp.domaine.com;
 location / {
   proxy_pass http://192.168.1.43:3000;
 }
}
server {
 listen 443;
 server_name myapp.domain.com;
 ssl on;
 ssl_certificate [...];
 ssl_certificate_key [...];
 location / {
   proxy_pass https://192.168.1.43:3001;
 }
}
server {
 listen 80;
 server_name music.domain.com;
 location / {
   proxy_pass http://192.168.1.35:4040;
 }
}
server {
 listen 443;
 server_name music.domain.com;
 ssl on;
 ssl_certificate [...];
 ssl_certificate_key [...];
 location / {
    proxy_pass https://192.168.1.35;
 }
}

O primeiro redirecionamento no myapp funciona. O redirecionamento na música funciona quando eu tinha apenas http no servidor madsonic. Quando eu ativo https no servidor madsonic, recebo um erro de gateway 502 Bad (mas o URL no Firefox é link ).

Eu também tentei:

server {
 listen 80;
 server_name music.domain.com;
 return 301 https//:192.168.1.35;
}

Não funcionou também. Eu não tenho ideia de onde isso possa vir. Alguém tem uma sugestão? Muito obrigado.

P.S: desculpe se meu inglês não é perfeito. Eu fiz o meu melhor: -s

    
por Caktus 16.07.2014 / 17:46

1 resposta

0

Em primeiro lugar, o Nginx é o seu terminador de SSL aqui. Isso significa que você não precisa executar seu aplicativo em ambos os modos - HTTP e HTTPS. HTTP seria suficiente.

Então, para o seu aplicativo, a configuração poderia ser assim:

server {
 listen 192.168.1.12:80;
 server_name myapp.domain.com;
 location / {
  rewrite ^ https://$server_name$request_uri? permanent;
 }
}

A diretiva acima redirecionará todas as solicitações HTTP para HTTPS.

server {
 listen 192.168.1.12:443;
 server_name myapp.domain.com;
 ssl on;
 ssl_certificate [...];
 ssl_certificate_key [...];
 location / {
  proxy_pass https://192.168.1.43:3000;
 }
}

Eu escolhi a porta 3000 no proxy_pass aqui para apontar para a versão HTTP do seu aplicativo. Você precisaria desativar a re-indicação do seu aplicativo para a porta 3001.

Em relação ao seu redirecionamento music.domain.com - para HTTP, você usa a porta 4040 no parâmetro proxy_pass, em HTTPS você não usa. Eu suponho que o servidor madsonic só escuta na porta 4040, então uma configuração poderia ser assim:

server {
 listen 192.168.1.12:80;
 server_name music.domain.com;
 location / {
  rewrite ^ https://$server_name$request_uri? permanent;
 }
}

server {
 listen 192.168.1.12:443;
 server_name music.domain.com;
 ssl on;
 ssl_certificate [...];
 ssl_certificate_key [...];
 location / {
  proxy_pass https://192.168.1.35:4040;
 }
}

Espero que isso ajude.

    
por 16.07.2014 / 20:46