ข้ามไปยังเนื้อหา

Reverse proxy และ URL base

ตั้งค่า

ตั้ง HolyArrs ไว้ที่ที่อยู่แบบ https://home.example/holyarrs หลัง reverse proxy ของคุณ

Reverse proxy คือเว็บเซิร์ฟเวอร์ที่อยู่หน้าแอปของคุณ และส่งแต่ละที่อยู่ไปยัง container ที่ถูกต้อง ส่วน URL base คือพาธที่ HolyArrs อยู่ภายใต้

  1. เพิ่มพาธลงในไฟล์ Compose ของคุณ:

    services:
    holyarrs:
    environment:
    - HOLYARRS_URL_BASE=/holyarrs
  2. รีสตาร์ต container

  3. เพิ่มกฎ proxy จาก ตัวอย่าง proxy

  4. เปิด https://home.example/holyarrs/ จะเห็นหน้าล็อกอิน Settings > This app (การตั้งค่า > แอปนี้) แสดงพาธที่ใช้อยู่

ที่ไหน มีผลเมื่อ
HOLYARRS_URL_BASE ตอนเริ่ม ชนะอันอื่นทั้งหมด
แฟลก -url-base /holyarrs ตอนเริ่ม เมื่อไม่ได้ตั้งตัวแปร
Settings > This app ตอนเริ่มครั้งถัดไป และเฉพาะเมื่อไม่ได้ตั้งทั้งตัวแปรและแฟลก

nginx-proxy-manager สร้าง proxy host สำหรับโดเมนของคุณ แล้วเพิ่ม custom location:

  • Location: /holyarrs
  • Forward hostname holyarrs port 6262 ห้ามมีเครื่องหมายสแลชท้าย ไม่เช่นนั้นพาธจะถูกตัดออก
  • ในกล่องรูปเฟืองของ location นั้น:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
proxy_read_timeout 1h;

Traefik อย่าเพิ่ม middleware StripPrefix

labels:
- traefik.enable=true
- traefik.http.routers.holyarrs.rule=Host(`home.example`) && PathPrefix(`/holyarrs`)
- traefik.http.services.holyarrs.loadbalancer.server.port=6262

Caddy ใช้ handle ส่วน handle_path จะตัดพาธออก

home.example {
handle /holyarrs* {
reverse_proxy holyarrs:6262 {
flush_interval -1
}
}
}

ชื่อโฮสต์และที่อยู่ของ proxy

ลิงก์ไปยัง ชื่อโฮสต์และที่อยู่ของ proxy
  • ถ้าผู้ใช้เข้า HolyArrs ด้วยชื่อโฮสต์ ให้เพิ่มชื่อนั้นลงใน HOLYARRS_ALLOWED_HOSTS
  • ถ้า proxy เพิ่ม X-Forwarded-For ให้เพิ่มที่อยู่ของ proxy ลงใน HOLYARRS_TRUSTED_PROXIES ถ้าไม่ทำ การล็อกอินจะแยกไม่ออกว่าใครอยู่ในเครือข่ายในบ้านของคุณ
อาการ สาเหตุ วิธีแก้
ทุกหน้าบอกว่าไม่พบ Proxy ตัดพาธออก เอาการตั้งค่าที่ตัดพาธออก หรือเอาสแลชท้ายออก
อัปเดตแบบสดไม่เคยมาถึง Proxy พักข้อมูลตอบกลับไว้ (buffer) ปิด buffering (proxy_buffering off, flush_interval -1)
พาธที่บันทึกไว้ทำให้เข้าไม่ได้ พาธที่บันทึกไว้ผิด เริ่มด้วย HOLYARRS_URL_BASE=/ เพื่อให้ข้ามค่านั้น
การล็อกอินมองว่าคุณอยู่นอกเครือข่าย Proxy ไม่ได้อยู่ในรายการที่เชื่อถือ ส่ง X-Real-IP และ X-Forwarded-For และตั้ง HOLYARRS_TRUSTED_PROXIES

วิธีแก้อื่น ๆ: การแก้ปัญหา

กฎของพาธ
  • ตัวอักษรที่อนุญาต: ตัวอักษร ตัวเลข -, _, . และ / ห้ามมี .. หรือ //
  • holyarrs, /holyarrs และ /holyarrs/ ล้วนหมายถึง /holyarrs
  • พาธที่บันทึกไว้แต่ไม่ถูกต้องจะถูกข้าม
  • ทุกอย่างย้ายไปอยู่ใต้พาธ: หน้า API อัปเดตแบบสด ล็อกอิน และลิงก์ที่ HolyArrs สร้างเอง (ลิงก์เชิญ ฟีดปฏิทิน)
  • /healthz และ /readyz ตอบที่ราก (root) ด้วย การตรวจสุขภาพของ image เองจึงยังใช้ได้
  • ที่อยู่อื่นนอกพาธจะตอบว่าไม่พบ
Proxy ต้องทำอะไร
ต้อง เหตุผล
ส่งพาธต่อโดยไม่แก้ไข HolyArrs ส่งต่อตามพาธเต็ม
คง header Host ไว้ การตรวจโฮสต์และลิงก์ที่สร้างขึ้นใช้ค่านี้
ไม่พักข้อมูลตอบกลับ อัปเดตแบบสดไหลผ่านคำตอบเดียวที่เปิดค้างไว้
Read timeout นาน (1 ชั่วโมง) สตรีมอัปเดตแบบสดเปิดค้างอยู่

HolyArrs ใช้ได้ฟรี ถ้าช่วยประหยัดเวลาคุณได้ กดดาวบน GitHub, สนับสนุนโปรเจกต์ หรือ เลี้ยงกาแฟผู้พัฒนา