Skip to main content

ทำ Reverse Proxy เพื่อให้ใช้งานได้สะดวกขึ้นอีกขั้น

Reverse Proxy  คืออะไร ผมขอข้าม ไปหาอ่านกันเอาเอง แต่ขอสรุปสั้น ๆ คือ เมื่อถึงจุด ๆ หนึ่งที่คุณใช้ NAS เชื่อมต่อมาจาก internet แล้วรู้สึกว่า

  • แอพต่าง ๆ เริ่มเยอะ ทั้งจากใน Package Center หรือ จาก Docker เกิดหัวจะปวด ต้องมานั่งจำ port ว่าเลขไหนแอพอะไร
  • เบื่อต้องเข้าไปยุ่งจัดการ foward port ซ้ำ ๆ ใน router เวลาติดตั้งโปรแกรมใหม่ ๆ
  • รำคาญใช้ DDNS แล้วยังต้องพิมพ์ port อีก

การทำ Reverse Proxy จะแก้ปัญหาพวกนี้ได้ ยกตัวอย่างเช่น

สมมุติว่าคุณใช้ DDNS ว่า yourname.synology.me และ IP NAS คุณคือ 192.168.1.10 ทำ HTTPS แล้ว

 คุณกำลังจะเข้า
URL เดิม (default port)
ทำ Reverse Proxy แล้วจะได้

DSM (local)

DSM (quickconnect)

DSM (DDNS)

https://192.168.1.10:5001

https://quickconnect.to/youname

https://yourname.synology.me:5001

https://dsm.yourname.synology.me

Synology Drive (แบบเดิม ๆ)

Synology Drive (quickconnect+alias)


เปิด DSM และคลิ๊ก icon เข้าไป

https://quickconnect.to/yourname/drive/

https://yourname.quickconnect.to/drive/

https://drive.yourname.synology.me

Docker App (สมมุติใช้ port 7890)

https://192.168.1.10:7890

https://yourname.synology.me:7890

https://appname.yourname.synology.me

Reverse Proxy ก็จะเข้ามาแก้ตรงนี้ให้เป็นแบบคอลัมน์ที่ 3 ของตาราง ตามชื่อ subdomain ที่ตั้งให้มัน และคุณก็ไม่ต้องคอยเข้าไปที่ router เพื่อ foward port ทุกครั้งที่ใช้ port ใหม่ด้วย คุณเปิดแค่ port 80/443 เท่านั้นบน router พอ!

วิธีทำ - ครึ่งแรกจัดการ SSL เดิมให้รองรับการทำ Reverse Proxy

จัดการในส่วนของ HTTPS และ DDNS ให้เรียบร้อยก่อนค่อยอ่านต่อ

  • กลับไปจัดการในส่วนของ HTTPS อีกครั้งโดยไปที่ Control Panel > Security > Certificate
  • จะเห็นว่าเรามี SSL ที่เป็นชื่อของเราทำงานอยู่สมมุติว่าเป็น yourname.synology.me
  • กดปุ่ม Add และเลือก Replace an existing certificate เลือก yourname.synology.me

image.png

  • เลือกตามรูป

image.png

  • Domain name: ให้ใช้ DDNS ของคุณเอง ตามตัวอย่างคือ yourname.synology.me
  • Email: ใช้เมลล์เดิมตอนที่ทำ DDNS ไว้ครั้งแรก
  • Subject Alternative Name: ให้ใช้ wildcard ตามตัวอย่างคือ *.yourname.synology.me

image.png

  • เสร็จแล้วให้กด Done แล้วก็รอมันทำงานจนเสร็จ
  • ดูตามรูปจะเห็นว่าในส่วนของ Subject Alternative Name จะมี wildcard เข้ามาแล้วพร้อมของเดิม

image.png

จบครึ่งแรก

วิธีทำ - ครึ่งหลัง การทำ Reverse Proxy

ตรวจสอบให้มั่นใจว่าคุณเปิด port 80/443 เรียบร้อยแล้วจาก router

ในเมื่อ Synology มีให้ใช้แล้วก็ใช้ของมันเองเพื่อความสะดวก เพราะจริง ๆ แล้วมันมี Nginx Proxy Manager อีกตัวที่นิยมใช้กันสมัย DSM 6 ซึ่งติดตั้งผ่าน Docker ได้ ซึ่งจากรายละเอียดที่เคยไปค้นมามันคือตัวเดียวกันกับของ Synology งั้นก็ไม่ต้องลงให้ลำบาก

  • ไปที่ Control Panel > Login Portal > Advance
  • มองหาปุ่ม Reverse Proxy กดเข้าไป และกด Create

image.png

  • ทีนี้ย้อนกลับมาดูตารางตัวอย่างอีกครั้ง เทียบกับหน้าจอ Create โดยดูส่วนที่ Highlight สีแดง
  • จะเห็นว่าพวกแอพต่าง ๆ ที่เป็น Package จะไม่มี port ตรงนี้สามารถไปเปิดได้ในส่วนของ alias ถ้าต้องการทำ Reverse Proxy
 คุณกำลังจะเข้า
URL เดิม (default port)
ทำ Reverse Proxy แล้วจะได้

DSM (local)

DSM (QuickConnect)

DSM (DDNS)

https://192.168.1.10:5001

https://quickconnect.to/youname

https://yourname.synology.me:5001

https://dsm.yourname.synology.me

Synology Drive (แบบเดิม ๆ)

Synology Drive (QuickConnect+alias)


เปิด DSM และคลิ๊ก icon เข้าไป

https://quickconnect.to/yourname/drive/

https://yourname.quickconnect.to/drive/

https://drive.yourname.synology.me

Docker App สมมุติใช้ port 7890)

https://192.168.1.10:7890

https://yourname.synology.me:7890

https://appname.yourname.synology.me

ขอยกตัวอย่างโดยการทำ DSM ให้เป็น Proxy

  • Reverse Proxy Name: ตั้งชื่ออะไรก็ได้ให้เข้าใจ ตามตัวอย่างคือ DSM
  • ฝั่ง Source
    • Protocol: HTTPS แน่นอนเพื่อความปลอดภัย
    • Hostname: https://dsm.yourname.synology.me ตั้งชื่ออะไรก็ตั้งตรงตัวหนา subdomain
    • Port: 443 ตามที่แนะนำตัวจาง ๆ
  • ฝั่ง Destination
    • Protocol: ส่วนของ DSM และ Package ต่าง ๆ จะเป็น HTTPS นอกนั้น HTTP
    • Hostname: localhost ตามที่แนะนำตัวจาง ๆ
    • Port: มันคือเลขเดิมที่เราใช้เข้าแอพนั้น ๆ หรือส่วนสีแดงตามตารางด้านบน ตามตัวอย่างคือ 5001 เพราะเป็น DSM

image.png

  • Save ให้เรียบร้อย และทดลองเข้าผ่าน browser

ถ้าเข้าไม่ได้ขึ้นอะไรต่าง ๆ นา ๆ ให้ดูจากที่มันแจ้ง Error ได้เลย ส่วนมากจะเป็น Destination ไม่ Protocol ก็ Port ผิด หรือไม่ได้เปิด port 80/443 ตั้งแต่แรก แต่อันนี้ดูง่ายเพราะน่าจะติดจอ router

มาถึงจุดนี้คุณก็จะมี subdomain มากมาย ซึ่งน่าจะจำง่ายกว่าเดิม ถ้ามีเยอะก็ควร Bookmark ไว้ หรือใช้ startpage เช่น Flame ช่วย