เซิร์ฟเวอร์โฮสติ้งเว็บไซต์ (คิดว่าหน้า GitHub) ออกแบบมาเพื่อรวมเข้ากับ Traefik อย่างลึกซึ้งสำหรับการกำหนดเส้นทางและการยกเลิก TLS
ทำงานระหว่างดำเนินการ
สร้างไดเรกทอรีของไดเรกทอรีที่ชื่อของแต่ละไดเรกทอรีเป็นชื่อโฮสต์ของไซต์ที่คุณต้องการให้บริการโดยมีเนื้อหาภายใน
/mnt/sites
├── example.com
│ └── index.html
└── othersite.example.com
└── index.html
ไฟล์ได้อย่างไรขึ้นอยู่กับคุณ MINIO, rsync
, WebDAV, ansible
ไม่สำคัญ
traefik-pages
รวมเข้ากับ Traefik ผ่านผู้ให้บริการ HTTP เมื่อ 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 แต่จำเป็นต้องเข้าถึง Traefik โดยใช้ชื่อโฮสต์และ IP คงที่ หาก Traefik ทำงานในโหมดโฮสต์ (เช่นเดียวกับฉัน) คุณจะต้องผูก traefik-pages
กับอินเทอร์เฟซภายในและฟังสิ่งนั้น
ฉลากช่วยให้ Traefik autoconfiguration สามารถตรวจจับ traefik-pages
โปรดทราบว่า $TRAEFIK_SERVICE
จะต้องตรงกับชื่อบริการที่สร้างโดย Traefik
ถัดไปคุณจะต้องสร้างผู้ให้บริการ HTTP สำหรับ Traefik โดยใช้พอร์ตและรหัสผ่านที่กำหนดค่าไว้ก่อนหน้านี้
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
: ชื่อผู้ใช้ Auth พื้นฐานที่จำเป็นสำหรับการเข้าถึง URL ส่วนตัว ( /.traefik-pages/*
) (จำเป็น)
$DENY_PREFIXES
: รายการคำนำหน้า URL ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อละเว้น (ส่งคืน 404 ทันที) ว่างเปล่าโดยค่าเริ่มต้น
$LOG_INTERNAL
: ไม่ว่าจะบันทึกคำขอสำหรับ URL ภายใน (เท็จเริ่มต้น)
$TRAEFIK_CERT_RESOLVER
: TRAEFIK ใบรับรองการแก้ไขเพื่อใช้ในการจัดเตรียมใบรับรอง TLS (โดยค่าเริ่มต้นจะไม่มีการร้องขอใบรับรอง)
$PORT
: พอร์ตเพื่อฟัง (ค่าเริ่มต้น 5000)
$WORKERS
: จำนวนกระบวนการของคนงานเพื่อจัดการคำขอ (ค่าเริ่มต้น 1)
traefik-pages
เขียนด้วยสนิมและออกแบบให้เร็วที่สุดเท่าที่จะทำได้
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 โดยมีกระบวนการคนงานเดียว