Passage SSL Nginx basé sur le path Uri

J'aimerais savoir s'il est possible de configurer Nginx pour envoyer dynamicment une request (sans terminaison SSL) à un microservice donné?

Dans mon architecture, j'ai deux microservices. Supposons qu'ils soient localhost: 5000 et localhost: 5100. J'aimerais envoyer toute request (qui viennent au proxy Nginx) qui commence par /api à localhost: 5000 et /services à localhost: 5100. J'ai configuré SSL sur les deux microservices, donc je n'ai pas besoin de terminaison SSL sur Nginx.

Est-ce possible?

2 Solutions collect form web for “Passage SSL Nginx basé sur le path Uri”

Ce que vous requestz de faire, c'est impossible. Ce n'est pas une limitation de Nginx, mais c'est une conséquence de la manière dont SSL fonctionne.

Passer une connection via un équilibreur de charge sans terminer SSL requirejs que l'équilibreur de charge choisisse un backend avant de pouvoir transférer le message ServerHello du server vers le client. Cependant, à ce stade précoce, le client n'a pas encore envoyé l'URI, donc il ne peut pas être utilisé dans le choix du backend.

Les alternatives que vous avez sont les suivantes:

  • Terminer SSL sur l'équilibreur de charge.
  • Accueille les services sur deux adresses IP différentes.
  • Accueille les services sur deux numéros de port différents.
  • Accueille les services sur deux noms de domaine différents.

Si vous avez une exigence pour que les URL utilisent un domaine spécifique et aucun numéro de port dans les URL, la plupart de ces options seront éliminées et la fin de SSL sur l'équilibreur de charge sera votre seule option.

La raison pour laquelle je distingue l'utilisation de deux adresses IP différentes et l'utilisation de deux noms de domaine différents est que deux noms de domaine indiquant la même adresse IP sont possibles, mais seulement tant que les clients prennent en charge SNI. (Dans ce scénario, vous ne pouvez que faire fonctionner un domaine pour les clients sans SNI).

Non, pas trop comment vous avez dit que vous voulez que cela fonctionne. Cependant, il existe des façons de le faire.

Nginx peut effectuer un équilibrage de charge TCP , pas de problème. Cela permet de passer des connections sans terminer SSL / TLS. Toutefois, à cette couche de la stack de réseau (couche 4, transport ), il n'y a aucune connaissance des URI. Vous ne pouvez pas utiliser les URL pour équilibrer les connections TCP, vous auriez besoin de Nginx en écoutant différents ports. C'est peut-être une solution assez bonne pour vous.

La meilleure façon de le faire, si cela correspond à votre application, serait de passer de la couche 4 à la couche 7. Nginx pourrait être de terminer SSL / TLS sur l'équilibreur de charge, puis laisser Nginx appeler les microservices. Les appels microservices peuvent être http ou https. Il y a un guide ici .

  • -bash: www.mydomain.com.pem: autorisation refusée
  • Comment désactiver la redirection ssl dans bugzilla
  • Certificat SSL sur Apache ne fonctionne pas sur iPhone et iPad
  • Roundcube + Dovecot: erreurs SSL lors de la connection
  • Comment configurer SSL dans le server zend?
  • Est-il possible de redirect https vers http en utilisant dns?
  • Exécuter les commands SVN avec un certificate SSL auto-signé
  • Configuration MySql SSL - Section Client
  • Spécifiez le ssl_certificatee de nginx dans le bloc location {}
  • Permet de crypter le renouvellement automatique ne fonctionne pas
  • OpenVPN ne partage pas le port avec nginx
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.