J'essaie de trouver un moyen de publier Nginx, Express et SSL de SSL de Nginx, Express et LetSencrypt en utilisant Docker-Compose. Il y a beaucoup de documents à ce sujet, alors j'ai référencé cela et essayé de faire ma propre configuration, j'ai la réussite de configurer donc maintenant je veux mettre des exemples de nodejs Je teste cette application avec mon domaine gauche et sur AWS EC2 Ubuntu16 . Je pense qu'il n'y a aucun problème à propos des paramètres DNS DNS et Règles de sécurité. Tous les 80, 443, 3000 ports ont déjà ouvert. Et quand je l'ai testé sans application Express, il affiche la page bien par défaut Nginx. P> NGinx Conf in /etc/nginx/conf.dleight/strong>< docker-compose.yml strong> p> dockerfile d'express fort> p> Je pense que SSL fonctionne bien, mais il y a quelques problèmes entre nginx + ssl code> à partir de ce
https://medium.com/@pentacent/nginx -et -et-laisse-chiffrer-with-docker-in-moins-ther-5-minutes-b4b8a60d3a71 code>
express code> app dans
Nginx + SSL Code> Docker-Compose. Mais je ne sais pas pourquoi, je reçois
502 Bad Gateway code> de nginx plutôt que d'express ''s initial Page. P>
Express App code> et
nginx code>. Comment puis-je résoudre ce problème? P> P>
4 Réponses :
location / { proxy_pass http://app:3000 }
Wow, vous avez exactement raison. Maintenant, je peux voir la page. Merci beaucoup!
J'ai bownvoté parce que - liens code> est legacy. Il est recommandé d'utiliser Réseaux définis par l'utilisateur .
Mise à jour de la réponse pour inclure également la route réseau définie par l'utilisateur.
Je pense que peut-être une source de confusion ici est la façon dont la désignation "localhost" se comporte parmi les services de course à pied dans Docker-Compose. La façon dont Docker-compose orchestre vos conteneurs, chacun des conteneurs se comprend pour être "localhost", donc "localhost" ne se réfère pas à la machine hôte (et si je ne me trompe pas, il n'y a aucun moyen pour un conteneur en cours d'exécution sur L'hôte pour accéder à un service exposé sur un port hôte, en dehors de certains exploits de sécurité). Pour démontrer: reconstruction p> $ docker-compose exec app /bin/bash -c "curl http://localhost:2999"
curl: (7) Failed to connect to localhost port 2999: Connection refused
AVERTISSEMENT FORT>: Le - Link CODE> Le drapeau est une fonctionnalité héritée de Docker. Cela peut éventuellement être supprimé. Sauf si vous avez absolument besoin de continuer à l'utiliser, nous vous recommandons d'utiliser Réseaux définis par l'utilisateur pour faciliter la communication entre deux conteneurs au lieu d'utiliser
- link code>. p>
Définir des réseaux dans votre
docker-compose.yml code> et configure vos services avec le réseau approprié: p>
xxx pré> note forte >:: le service code> code> ne publie plus ses ports de l'hôte, il n'expose que le port 3000 (réf. Exposant et publication des ports ), il est uniquement disponible pour les services connectés au réseau code> Backend code>. Le service
nginx code> a un pied dans les deux
backend code> et
frontal code> réseau pour accepter le trafic entrant à partir du
frontend code> et proxy les connexions à l'application
code> dans le backend
code> (réf. réseau multi-hôte ). p>
avec Réseaux définis par l'utilisateur Vous pouvez résoudre le nom du service: P>
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { upstream app { server app:3000 max_fails=3; } server { listen 80; server_name example.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; listen [::]:443 ssl; server_name example.com; server_tokens off; location / { proxy_pass http://app; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } ssl_certificate /etc/letsencrypt/live/sendpi.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/sendpi.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; } }
HTTPS : //github.com/evertramos/docker-commose-letsencrypt-nginx-proxy-companion P>
/ {path_to_the_project} em> /Docker-commose.yml p> blockQuote>
xxx pré> / {path_to_the_project} em> /.env p> blockQuote>
xxx pré> N'oubliez pas de Connecter le domaine à votre serveur avant de lancer un conteneur fort> là. p> blockQuote>
Comment ça marche? h2>
Il suffit d'exécuter
docker-composition up --build -d code> p> h2>