2017-10-16 8 views
0

J'ai une machine virtuelle avec uniquement Nginx et Docker. J'ai obtenu un certificat de chiffrer pour mon domaine. À l'intérieur d'un conteneur docker, j'ai installé un GitLab. Maintenant j'essaye d'atteindre le GitLab à travers mon Nginx Proxy.GitLab dans le Docker avec le proxy Nginx

Mon problème est l'accès SSH à GitLab, car lorsque j'essaie de rediriger le trafic SSH vers mon Docker via un flux dans Nginx, j'ai l'erreur "adresse déjà utilisée".

Dans le Docker j'ai une adresse comme "127.240.0.1:22:22" et dans Nginx je redirige de gitlab.xyz à 127.240.0.1:22 avec proxy_pass sur le port TCP 22. Mais ce n'est pas travail.

Avez-vous des suggestions? Merci!

Répondre

1

Malheureusement, cela ne fonctionnera pas. Les clients HTTP (s) envoient un en-tête Host qui indique l'adresse qu'ils tentent d'atteindre (gitlab.xyz).

Pour le TCP brut, il n'y a pas d'en-tête Host, il n'y a donc aucun moyen de déterminer quel conteneur doit recevoir la requête.

Vous obtenez l'adresse déjà utilisée car votre hôte utilise déjà le port 22/tcp.

Nous avons rencontré le même problème et fourni à l'hôte une deuxième adresse IP sur laquelle l'alias DNS a été redirigé. Nous savons que toutes les connexions à cette adresse IP sont supposées aller à gitlab. Cela signifie que vous n'avez même pas besoin d'un reverse-proxy, puisque vous pouvez simplement ouvrir les ports directement dans le conteneur. (-p new.gitlab.ip: 22: 22)

+0

Et comment faites-vous le traitement de SSL? À l'intérieur du docker gitlab? –

+0

Je ne suis pas très sûr de la façon dont nous l'avons traité, car je n'ai actuellement aucun accès au système. Mais vous pouvez toujours gérer tous les autres trafics vers gitlab via le reverse-proxy, à l'exception de SSH. Vous pouvez également obtenir les certificats dans le conteneur via le volume et avoir une gestion SSL "normale" avec nginx à l'intérieur du conteneur (en supposant que vous utilisez une installation omnibus). – samprog

+0

J'ai essayé votre approche de mon instance AWS EC2, mais j'ai toujours l'erreur: "bind: impossible d'attribuer l'adresse demandée". La syntaxe est comme: "ports: - '1.2.3.4:1337:1337'" et 1.2.3.4 est par exemple mon AWS élastique IP –