이미지와 공식 nginx 이미지를 사용하여 두 개의 별도 컨테이너로 실행될 수도 있습니다.
도커 소켓이 공개적으로 노출된 컨테이너 서비스에 바인딩되는 것을 방지하기 위해 이 작업을 수행할 수 있습니다(nginx 노출 컨테이너에 도커 소켓을 마운트하지 마세요). 보안적인 측면에서는 더 좋습니다.
nginx 프록시를 별도의 컨테이너로 실행하려면 다음이 필요합니다.
1) 템플릿 파일 nginx.tmpl을 docker-gen 컨테이너에 마운트합니다. 다음과 같은 명령을 사용하여 최신 공식 nginx.tmpl을 얻을 수 있습니다.
으아악
2)
환경 변수를 docker-gen 컨테이너의 이름이나 ID로 설정합니다.
NGINX_DOCKER_GEN_CONTAINER예:
첫 번째 볼륨으로 nginx(공식 이미지)를 시작하세요:
으아악
두 번째로 공유 볼륨과 템플릿 파일을 사용하여 docker-gen 컨테이너를 시작합니다.
으아악
그런 다음 이 컨테이너를 시작합니다(NGINX_DOCKER_GEN_CONTAINER 변수는 docker-gen 컨테이너 이름 또는 ID를 포함해야 함):
으아악
그런 다음 이전에 설명한 대로 프록시할 컨테이너를 시작합니다.
어떤 이유로 docker --volumes-from 옵션을 사용할 수 없는 경우
변수를 사용하여 nginx 컨테이너의 이름이나 ID를 지정할 수 있습니다.
NGINX_PROXY_CONTAINER
암호화하자
Let's Encrypt 서비스를 사용하여 가상 호스트에 대한 유효한 인증서를 자동으로 생성합니다.
프록시되는 컨테이너에 대해 Let's Encrypt 지원을 활성화하려면 다음 환경 변수를 설정하세요. 이 환경 변수는 프록시될 각 애플리케이션 컨테이너에서 선언되어야 합니다.
LETSENCRYPT_HOST
LETSENCRYPT_EMAIL
변수는 VIRTUAL_HOST 변수와 동일해야 하며 공개적으로 연결할 수 있는 도메인이어야 합니다. 쉼표 구분 기호로 여러 호스트를 지정하세요.
LETSENCRYPT_HOST variable most likely needs to be the same as the VIRTUAL_HOST다음 환경 변수는 선택 사항이며 Let's Encrypt 클라이언트가 작동하는 방식을 매개 변수화합니다.
LETSENCRYPT_KEYSIZE
변수는 요청된 키의 크기를 결정합니다(비트 단위, 기본값은 4096).
LETSENCRYPT_KEYSIZE다중 도메인(SAN) 인증서
다중 도메인(SAN) 인증서를 생성하려면 기본 도메인을
환경 변수의 첫 번째 도메인으로 추가하세요.
테스트 인증서
5개의 인증서/주/도메인 제한이 없는 테스트 인증서를 생성하려면 LETSENCRYPT_TEST environment variable with a value of true(LETSENCRYPT_HOST를 사용하여 인증서를 요청하는 컨테이너에서)을 정의하세요. 모든 컨테이너에 대해 전역적으로 이 작업을 수행하려면 아래 설명에 따라 ACME_CA_URI를 설정하세요.
자동 인증서 갱신
매시간(3600초)마다 인증서가 확인되고 향후 30일(90일/3) 내에 만료되는 모든 인증서가 갱신됩니다.
예:
으아악
선택적 컨테이너 환경 변수
사용자 정의 구성을 위한 선택적 letsencrypt-nginx-proxy-companion 컨테이너 환경 변수입니다.
ACME_CA_URI - Directory URI for the CA ACME API endpoint (default: https://acme-v01.api.letsencrypt.org/directory). If you set it's value to https://acme-staging.api.letsencrypt.org/directory letsencrypt는 주당 5개의 인증서/도메인 제한이 없는 테스트 서버를 사용합니다. 컨테이너별로 테스트 인증서를 생성할 수도 있습니다(테스트 인증서 암호화 참조)
예를 들어
으아악
DEBUG - Set it to true 진입점 스크립트 디버깅 및 LetsEncrypt 인증서 생성을 활성화하여 구성 문제를 정확히 파악하는 데 도움이 될 수 있습니다.
"com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true" 라벨 - nginx-proxy 컨테이너에 이 라벨을 설정하여 docker-letsencrypt-nginx-proxy-companion 컨테이너가 이를 프록시로 사용하도록 지시합니다.
ACME_TOS_HASH - 다른 CA의 ACME 구현을 지원하기 위해 대체 TOS 해시를 simp_le에 전달해 보겠습니다.
컨테이너는 호스트의 포트만 직접 바인딩할 수 있으므로(예: 10개의 웹 컨테이너가 있고 이러한 컨테이너는 모두 80 또는 443이 필요하므로 -p 매개변수는 가능하지 않으므로 컨테이너를 게이트웨이 역방향으로 사용하거나) 프록시 컨테이너, -p에는 nginx, nginx 컨테이너 및 php-fpm 및 노드와 같은 기타 웹 컨테이너를 사용합니다. nginx를 역방향 프록시로 통해 액세스하면 인증서도 nginx 서버로 직접 전달되며 443 전달이 가능합니다.
사실 기본적인 내용이지만 docker와는 전혀 관련이 없습니다
이 글은 lnmp 환경입니다. /a/11...
여러 php-fpm, node 또는 python 백엔드 서비스가 있는 경우 nginx는 다음과 같아야 합니다
折腾了一个下午,找到了docker的解决方案
ㅋㅋㅋgithub:https://github.com/JrCs/docke...
별도용기(권장방법)
nginx 프록시는 jwilder/docker-gen
이미지와 공식 nginx 이미지를 사용하여 두 개의 별도 컨테이너로 실행될 수도 있습니다.도커 소켓이 공개적으로 노출된 컨테이너 서비스에 바인딩되는 것을 방지하기 위해 이 작업을 수행할 수 있습니다(nginx 노출 컨테이너에 도커 소켓을 마운트하지 마세요). 보안적인 측면에서는 더 좋습니다.
nginx 프록시를 별도의 컨테이너로 실행하려면 다음이 필요합니다.
1) 템플릿 파일 nginx.tmpl을 docker-gen 컨테이너에 마운트합니다. 다음과 같은 명령을 사용하여 최신 공식 nginx.tmpl을 얻을 수 있습니다.
으아악2)
환경 변수를 docker-gen 컨테이너의 이름이나 ID로 설정합니다.NGINX_DOCKER_GEN_CONTAINER
예:첫 번째 볼륨으로 nginx(공식 이미지)를 시작하세요:-
으아악
두 번째로 공유 볼륨과 템플릿 파일을 사용하여 docker-gen 컨테이너를 시작합니다.-
으아악
그런 다음 이 컨테이너를 시작합니다(NGINX_DOCKER_GEN_CONTAINER 변수는 docker-gen 컨테이너 이름 또는 ID를 포함해야 함):-
으아악
그런 다음 이전에 설명한 대로 프록시할 컨테이너를 시작합니다.
어떤 이유로 docker --volumes-from 옵션을 사용할 수 없는 경우- 변수를 사용하여 nginx 컨테이너의 이름이나 ID를 지정할 수 있습니다.
암호화하자
NGINX_PROXY_CONTAINER
Let's Encrypt 서비스를 사용하여 가상 호스트에 대한 유효한 인증서를 자동으로 생성합니다.
프록시되는 컨테이너에 대해 Let's Encrypt 지원을 활성화하려면 다음 환경 변수를 설정하세요. 이 환경 변수는 프록시될 각 애플리케이션 컨테이너에서 선언되어야 합니다.
LETSENCRYPT_HOST
LETSENCRYPT_EMAIL
VIRTUAL_HOST
변수와 동일해야 하며 공개적으로 연결할 수 있는 도메인이어야 합니다. 쉼표 구분 기호로 여러 호스트를 지정하세요.LETSENCRYPT_HOST
variable most likely needs to be the same as theVIRTUAL_HOST
다음 환경 변수는 선택 사항이며 Let's Encrypt 클라이언트가 작동하는 방식을 매개 변수화합니다.LETSENCRYPT_KEYSIZE
LETSENCRYPT_KEYSIZE
다중 도메인(SAN) 인증서다중 도메인(SAN) 인증서를 생성하려면 기본 도메인을
환경 변수의 첫 번째 도메인으로 추가하세요.테스트 인증서
5개의 인증서/주/도메인 제한이 없는 테스트 인증서를 생성하려면
LETSENCRYPT_TEST
environment variable with a value oftrue
(LETSENCRYPT_HOST를 사용하여 인증서를 요청하는 컨테이너에서)을 정의하세요. 모든 컨테이너에 대해 전역적으로 이 작업을 수행하려면 아래 설명에 따라 ACME_CA_URI를 설정하세요.자동 인증서 갱신
매시간(3600초)마다 인증서가 확인되고 향후 30일(90일/3) 내에 만료되는 모든 인증서가 갱신됩니다.
예:
으아악선택적 컨테이너 환경 변수
사용자 정의 구성을 위한 선택적 letsencrypt-nginx-proxy-companion 컨테이너 환경 변수입니다.
ACME_CA_URI
- Directory URI for the CA ACME API endpoint (default:https://acme-v01.api.letsencrypt.org/directory
). If you set it's value tohttps://acme-staging.api.letsencrypt.org/directory
letsencrypt는 주당 5개의 인증서/도메인 제한이 없는 테스트 서버를 사용합니다. 컨테이너별로 테스트 인증서를 생성할 수도 있습니다(테스트 인증서 암호화 참조)예를 들어
으아악DEBUG
- Set it totrue
진입점 스크립트 디버깅 및 LetsEncrypt 인증서 생성을 활성화하여 구성 문제를 정확히 파악하는 데 도움이 될 수 있습니다."com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true" 라벨 - nginx-proxy 컨테이너에 이 라벨을 설정하여 docker-letsencrypt-nginx-proxy-companion 컨테이너가 이를 프록시로 사용하도록 지시합니다.
ACME_TOS_HASH
- 다른 CA의 ACME 구현을 지원하기 위해 대체 TOS 해시를 simp_le에 전달해 보겠습니다.예:
이 컨테이너를 사용하는 방법에 대한 다른 예를 보려면 다음을 참조하세요.
Karl Fathi의 예
Karl
조지 일리스의 예
Dmitry의 간단한 Docker 작성 예
注意,这里有个坑,也怪我自己没看清楚,如果镜image已经expose端口就设置VIRTUAL_HOST、LETSENCRYPT_HOST、LETSENCRYPT_EMAIL就行,如果没有就得在设置好三个环境变weight之后自己加入--expose 容器内应用服务端口 参数启动.如果容器是discourse这样的,就得在app.yml内设置好环境变weight之后把端为映射的80:80改为未为未映射프트:80,然后再保存重建启动。
컨테이너는 호스트의 포트만 직접 바인딩할 수 있으므로(예: 10개의 웹 컨테이너가 있고 이러한 컨테이너는 모두 80 또는 443이 필요하므로 -p 매개변수는 가능하지 않으므로 컨테이너를 게이트웨이 역방향으로 사용하거나) 프록시 컨테이너, -p에는 nginx, nginx 컨테이너 및 php-fpm 및 노드와 같은 기타 웹 컨테이너를 사용합니다. nginx를 역방향 프록시로 통해 액세스하면 인증서도 nginx 서버로 직접 전달되며 443 전달이 가능합니다.
사실 기본적인 내용이지만 docker와는 전혀 관련이 없습니다
이 글은 lnmp 환경입니다.
/a/11...
여러 php-fpm, node 또는 python 백엔드 서비스가 있는 경우 nginx는 다음과 같아야 합니다
으아악