Encore une autre erreur 502 avec NginX

1

J'essaie de mettre en place un serveur @ home avec certains services de base. Tous les services fonctionnent sur une machine virtuelle dédiée. Chaque machine virtuelle est hébergée sur vSphere 5.5. Jusqu'à présent j'ai:

  • Debian Wheezy avec nginx utilisé comme proxy inverse: 192.168.1.12
  • Debian Wheezy avec nodeJS utilisé comme serveur Webapp: 192.168.1.43
    • 192.168.1.43:3000 => serveur Web http qui redirige 192.168.1.43:3001
    • 192.168.1.43:3001 => Le serveur Web https qui fournit le service
  • Debian Wheezy avec madsonic installé: 192.168.1.35
    • Comme indiqué dans la documentation, j'ai mis --https-port = 443 dans la configuration pour permettre l'accès https

J'utilise nginx pour pouvoir avoir des choses comme ça:

  • myapp.mydomaine.com => aller à nodejs @ 192.168.1.43
  • music.mydomain.com => aller chez madsonic @ 192.168.1.35

J'ai suivi un tutoriel et modifié le fichier "par défaut" dans / etc / nginx / sites-enabled. Voici à quoi ça ressemble:

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;
 }
}

La première redirection sur myapp fonctionne. La redirection sur la musique fonctionne lorsque je n'avais que http sur le serveur madsonic. Lorsque j'active https sur un serveur madsonic, une erreur de passerelle 502 Bad apparaît (mais l'adresse URL dans Firefox est https://music.domain.com ).

J'ai aussi essayé:

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

N'a pas travaillé non plus. Je ne sais pas d'où cela pourrait provenir. Quelqu'un a une suggestion? Merci beaucoup.

PS: désolé si mon anglais n'est pas parfait. J'ai fait de mon mieux: -s

Caktus
la source

Réponses:

0

Tout d’abord, Nginx est votre terminateur SSL ici. Cela signifie que vous n'avez pas besoin d'exécuter votre application en mode HTTP et HTTPS. HTTP serait suffisant.

Donc, pour votre application, la configuration pourrait ressembler à ça:

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

La directive ci-dessus redirigera toutes les requêtes HTTP vers 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;
 }
}

J'ai choisi le port 3000 dans proxy_pass ici pour désigner la version HTTP de votre application. Vous devez désactiver la redirection de votre application sur le port 3001.

En ce qui concerne votre redirection music.domain.com, pour HTTP, vous utilisez le port 4040 dans le paramètre proxy_pass, mais pas en HTTPS. Je suppose que le serveur madsonic n'écoute que sur le port 4040, ainsi une configuration pourrait ressembler à ceci:

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;
 }
}

J'espère que cela t'aides.

desasteralex
la source