> 운영 및 유지보수 > 엔진스 > nginx를 사용하여 다중 도커 컨테이너 역방향 프록시

nginx를 사용하여 다중 도커 컨테이너 역방향 프록시

藏色散人
풀어 주다: 2019-09-21 10:05:46
앞으로
6581명이 탐색했습니다.

소개

앞서 docker를 소개했을 때, 동일한 서버에 여러 환경을 구축하고 서로 격리할 수 있다는 것이 장점 중 하나라고 말씀드렸습니다. 어제 실제 작업을 했는데 이렇게 함정이 많을 줄은 전혀 예상하지 못했고, 이전에 처음부터 서버를 구축하는 것보다 시간도 더 많이 걸릴 것이라고 생각하지 못했습니다. 여러 가지 계획을 변경한 끝에 드디어 해결했습니다. 중간에 아쉬운 점은 무시하고 운영 방법만 말씀드리도록 하겠습니다.

추천 튜토리얼: nginx 튜토리얼

Architecture

laradock 이미지는 서버에 이미 존재하며, laravel 환경과 nginx, mysql, redis 등의 기타 PHP를 실행할 수 있습니다.

내 생각은 역방향 프록시로 사용할 다른 nginx 컨테이너를 추가하는 것입니다. 하위 도메인 이름에 따라 배포하며 laradock이나 다른 컨테이너(wordpress, python, java 포함) 등에 배포할 수 있습니다.

Modify lradock

수정할 수 있는 곳은 한 곳뿐입니다. nginx는 계속 듣고 있습니다.

1. laradock 디렉터리로 들어갑니다.

2. .env 파일을 수정하고 NGINX_HOST_HTTP_PORT 값을 80에서 8000으로 수정합니다.

3 nginx를 중지하고 nginx를 중지합니다.

4.

5. docker-compose up -d nginx를 시작하세요

nginx가 더 이상 포트 80을 수신하지 않기 때문에 현재 브라우저에서 성공적으로 액세스할 수 없습니다.

nginx 컨테이너 추가

역방향 프록시용 새 nginx 컨테이너를 추가하세요. laradock을 설치하면 이미 nginx:alpine 이미지가 있고, 컨테이너를 직접 생성할 수 있습니다. 물론 새 이미지를 다시 가져올 수도 있습니다. (Alpine 버전 권장)

1. nginx 이미지 ID 확인, docker iamges

2. docker run --name proxy_nginx -p 80:80 -d [nginx image id]. -v 매개변수를 추가하여 구성 파일을 매핑할 수도 있는데, 이는 변경 사항이 적은 내 환경에서는 필요하지 않습니다

3. 브라우저에서 액세스하면 시작이 성공했음을 나타내는 nginx의 기본 페이지여야 합니다

4. 컨테이너에서 세대를 입력합니다. docker exec -it proxy_nginx sh

5. vim을 설치하고 apk add vim

6 호스트 IP를 확인합니다. /sbin/ip Route|awk '/default/ { print $3 } '

7. 다음 내용으로 laradock.conf를 etc/nginx/conf.d/ 디렉터리에 추가합니다.

server {
    listen  80;
    server_name  you_site;
    location / {
        proxy_set_header  Host  $http_host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass  http://[宿主机IP]:8000;
    }
}
로그인 후 복사

1. 컨테이너를 종료한 다음 docker restart proxy_nginx

2. 8000번 포트를 열어두시면 여기를 참고하세요

결론

이때 접속하시면 laradock에서 nginx로 프록시가 가능합니다. 나중에 다른 컨테이너를 추가하려면 Proxy_nginx에 새 프록시 규칙만 추가하면 됩니다.

위 내용은 nginx를 사용하여 다중 도커 컨테이너 역방향 프록시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿