라우팅 및 TLS 종료를 위해 Traefik과 깊이 통합하도록 설계된 웹 사이트 호스팅 서버 (Github 페이지 생각).
진행중인 작업
각 디렉토리의 이름이 제공하려는 사이트의 호스트 이름 인 디렉토리 디렉토리를 작성하십시오.
/mnt/sites
├── example.com
│ └── index.html
└── othersite.example.com
└── index.html
파일이있는 방법은 당신에게 달려 있습니다. Minio, rsync
, Webdav, ansible
은 중요하지 않습니다.
traefik-pages
HTTP 제공 업체를 통해 Traefik과 통합됩니다. Traefik이 API에 닿으면 traefik-pages
필요한 호스트 이름을 가져 오기 위해 사이트를 포함하는 디렉토리를 나열하고 Traefik을 위해 라우터 구성을 반환합니다. 이 라우터에는 디렉토리의 호스트 이름과 일치하는 규칙과 traefik-pages
에 지정된 서비스와 일치하는 규칙이 있습니다. Traefik은 업데이트 된 구성을 위해 traefik-pages
지속적으로 폴링하므로 새로 생성 된 사이트는 신속하게 픽업됩니다.
먼저 traefik-pages
용 컨테이너를 만듭니다.
traefik-pages :
image : theorangeone/traefik-pages:latest
volumes :
- ./sites:/mnt/sites:ro
environment :
- SITES_ROOT=/mnt/sites
- TRAEFIK_SERVICE=traefik-pages@docker
- AUTH_PASSWORD=hunter2
labels :
- traefik.enable=true
이것은 Traefik과 같은 파일에있을 필요는 없지만 고정 된 호스트 이름과 IP를 사용하여 Traefik에 액세스 할 수 있어야합니다. Traefik이 호스트 모드에서 실행중인 경우 (내가하는 것처럼) traefik-pages
내부 인터페이스에 바인딩하고 그 말을 들어야합니다.
이 레이블을 사용하면 Traefik Autoconfiguration이 traefik-pages
감지 할 수 있습니다. $TRAEFIK_SERVICE
는 Traefik이 생성 한 서비스 이름과 일치해야합니다.
다음으로, 이전에 구성된 포트 및 비밀번호를 사용하여 Traefik 용 HTTP 제공 업체를 만들어야합니다.
providers :
...
http :
endpoint :
- " http://[email protected]:5000/.traefik-pages/provider "
여기에서는 traefik-pages
의 폴링 간격을 구성 할 수도 있습니다.
이제 Traefik과 traefik-pages
시작하면 사이트에 대한 라우터를 통신하고 만들기 시작해야합니다.
traefik-pages
의 구성은 전적으로 환경 변수를 통해 수행됩니다.
$SITES_ROOT
: 사이트가 저장되는 디렉토리 (필수).
$TRAEFIK_SERVICE
: 트래픽이 라우팅 될 traefik-pages
의 서비스 이름 (필수).
$AUTH_PASSWORD
: 개인 URL에 대한 액세스에 필요한 기본 인증 사용자 이름 ( /.traefik-pages/*
) (필수).
$DENY_PREFIXES
: 무시할 URL 접두사 목록 (즉시 404). 기본적으로 비어 있습니다.
$LOG_INTERNAL
: 내부 URL에 대한 요청 여부 (기본값 거짓).
$TRAEFIK_CERT_RESOLVER
: TLS 인증서를 제공하는 데 사용하는 Traefik 인증서 Resolver (기본적으로 인증서가 요청되지 않음).
$PORT
:들을 수있는 포트 (기본 5000).
$WORKERS
: 요청을 처리하기위한 작업자 프로세스 수 (기본값 1).
traefik-pages
Rust로 작성되었으며 가능한 빨리 설계되었습니다.
Requests per second: 6786.85 [#/sec] (mean)
Time per request: 14.734 [ms] (mean)
Time per request: 0.147 [ms] (mean, across all concurrent requests)
Transfer rate: 1471.37 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 2
Processing: 3 15 5.5 14 51
Waiting: 2 14 5.5 14 51
Total: 3 15 5.5 14 51
Percentage of the requests served within a certain time (ms)
50% 14
66% 16
75% 17
80% 18
90% 21
95% 25
98% 30
99% 35
100% 51 (longest request)
이 테스트는 단일 작업자 프로세스와 함께 2600X에서 실행되었습니다.