2017-10-16 2 views
0

나는 Nginx와 Docker 만있는 VM을 가지고 있습니다. 나는 내 도메인을 암호화 할 수있는 인증서를 가지고있다. 도커 컨테이너 안에는 GitLab이 설치되어 있습니다. 이제 저는 Nginx 프록시를 통해 GitLab에 접근하려고합니다.GitLab in Docker with Nginx proxy

Nginx의 스트림을 통해 SSH 트래픽을 내 Docker로 리디렉션하려고하면 "주소가 이미 사용 중입니다"라는 오류가있어서 GitLab에 SSH로 액세스 할 수 있습니다.

Docker에서 "127.240.0.1:22:22"와 같은 주소가 있고 Nginx에서 TCP 포트 22에서 proxy_pass를 사용하여 gitlab.xyz에서 127.240.0.1:22로 리디렉션하고 있습니다.하지만이 방법은 사용하지 마십시오. 작업.

의견이 있으십니까? 감사합니다.

답변

1

슬프게도 이것은 작동하지 않습니다. HTTP 클라이언트는 도달하려는 주소를 나타내는 Host 헤더를 보냅니다 (gitlab.xyz).

원시 TCP의 경우 호스트 헤더가 없으므로 요청을받을 컨테이너를 파악할 방법이 없습니다.

호스트가 이미 포트 22/tcp를 사용하고 있기 때문에 "주소가 이미 사용 중"입니다.

우리는 동일한 문제가 있었고 DNS-Alias가 리디렉션하는 두 번째 IP를 호스트에 제공했습니다. 우리는이 IP에 대한 모든 연결이 gitlab에 있어야한다고 알고 있습니다. 즉, 포트를 컨테이너로 직접 열어 볼 수 있기 때문에 리버스 프록시가 필요하지 않습니다. (-p new.gitlab.ip : 22 : 22)

+0

SSL 처리 방법은 무엇입니까? gitlab 도커 안쪽에? –

+0

현재 시스템에 액세스 할 수 없어서 어떻게 처리했는지 잘 모르겠습니다. 그러나 afaik를 사용하면 SSH를 제외하고 역방향 프록시를 통해 gitlab에 대한 다른 모든 트래픽을 처리 할 수 ​​있습니다. 또한 볼륨을 통해 컨테이너에 인증서를 가져올 수 있으며 (일반적으로 옴니 버스 설치를 사용한다고 가정 할 때) 컨테이너 내부의 nginx와 함께 "정상적인"SSL 처리를 할 수 있습니다. – samprog

+0

AWS EC2 인스턴스에 대한 접근 방식을 시도했지만 "bind : 요청 된 주소를 할당 할 수 없습니다"라는 오류 메시지가 항상 나타납니다. 구문은 다음과 같습니다. "포트 : - '1.2.3.4:1337:1337'"이고 1.2.3.4는 예를 들어 내 AWS 탄력적 인 IP입니다. –