Configuration de NGINX pour proxy les requêtes SSL vers un serveur Sinatra

J’ai une clé, un certificate et un certificate de chaîne. Le domaine ressemble à automation.mydomain.com

J’ai un serveur Sinatra qui tourne sur localhost:3000 , confirmé via curl localhost:3000/test .

Je voudrais redirect le trafic du port 80 et du port 443 vers 3000. Voici ma configuration /etc/sites-enabled/sinatra :

 upstream app_aggregator { server 127.0.0.1:3000; keepalive 8; } # the nginx server instance server { listen 0.0.0.0:80; server_name automation.mydomain.com my_site; access_log /var/log/nginx/aggregator.log; # pass the request to the node.js server with the correct headers # and much more can be added, see nginx config options location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://app_aggregator/; proxy_redirect off; } } 

Notez que ce qui précède ne fonctionne pas ( http://automation.mydomain.com/ se traduit par ERR_NAME_NOT_RESOLVED ). Je ne sais pas comment append la clé, le certificate normal et le certificate de chaîne dans ce mélange.

J’ai résolu ce problème dans le passé avec une configuration node.js qui consum heureusement les clés et le SSL fonctionnait très bien, mais je n’ai jamais utilisé nginx.

Il est intéressant de noter que j’utilise Amazon AWS et que seuls 80 et 443 sont ouverts.

Il y a quelque chose qui ne va pas dans la configuration DNS de votre domaine, difficile de vous dire ce qui ne va pas sans en savoir plus sur votre installation, mais assurez-vous au moins que les serveurs de noms de votre domaine soient correctement configurés -exemple.

Une chose importante à noter lors de la configuration de HTTPS avec Nginx est que votre fichier de certificate doit inclure tous les certificates intermédiaires que vous pourriez avoir. Voir le lien vers la documentation Nginx ci-dessous pour plus d’informations.

Configurer SSL avec Nginx peut être aussi simple que d’append ces 3 lignes à votre configuration:

 listen 0.0.0.0:443 ssl; ssl_certificatee /path/to/your/certificatee ssl_certificatee /path/to/your/certificatee_key 

Si vous souhaitez appliquer le protocole HTTPS, vous pouvez désactiver le port HTTP (port 80) sur votre bloc de serveur existant et en créer un tel que celui-ci:

 server { listen 0.0.0.0:80; server_name automation.mydomain.com my_site; return 301 https://$server_name$request_uri; } 

Cela redirecta toute requête HTTP vers votre serveur compatible HTTPS. Notez que je vous conseille de changer 301 à 302 tout en testant afin que votre navigateur ne cache pas la réponse.

Voir ces ressources pour plus d’informations

  • Documentation du module nsxx ssl
  • Forte sécurité SSL sur nginx par Raymii