- แชร์ประสบการณ์การตั้งค่าให้เข้าถึงเว็บแอปที่กำลังพัฒนาได้ด้วย URL แบบเรียบง่ายอย่าง
appname.localhost โดยไม่ต้องจำพอร์ตอย่าง localhost:4333
- เมื่อใช้ระบบนี้ การเข้าถึงเว็บแอปบนเครื่องโลคัลจะตรงไปตรงมาและเป็นระเบียบมากขึ้น
- แต่ละแอปรันบนพอร์ตเฉพาะของตัวเองผ่าน launchd daemon
- ตั้งค่าในไฟล์
/etc/hosts ให้รีไดเร็กต์ appname.localhost ไปที่ 127.0.0.1
- ตัวอย่าง:
127.0.0.1 inclouds.localhost
- ใช้ Caddy เพื่อทำพร็อกซีโดเมนดังกล่าวไปยังพอร์ตที่เหมาะสม
ตัวอย่างการตั้งค่า Caddy
inclouds.localhost {
reverse_proxy localhost:5050
tls internal
encode gzip zstd
}
- สำหรับแต่ละโดเมน
.localhost ให้เขียนการตั้งค่าพร็อกซีไปยังพอร์ตที่เกี่ยวข้องไว้ใน Caddyfile
- รวมการรองรับใบรับรอง TLS ภายในและการบีบอัดไว้ด้วย
ไอเดียสำหรับการปรับปรุงในอนาคต
- ตอนนี้ยังต้องแก้ไขไฟล์สามไฟล์ด้วยตนเอง (
/etc/hosts, Caddyfile, launchd plist)
- เป้าหมายในอนาคตคือสร้างเครื่องมืออัตโนมัติที่ใช้คำสั่งเดียวเพื่อติดตั้ง/ลบแอปบนโดเมน
.localhost
อัปเดต
- Cristóbal ได้แนะนำคำสั่งที่อิงกับ dnsmasq เพื่อทำให้กระบวนการนี้ง่ายขึ้น
- แนวคิดหลักมีดังนี้:
- รีไดเร็กต์
*.localhost ทั้งหมดไปที่ 127.0.0.1
- ตั้งค่าเซิร์ฟเวอร์ให้ทำ reverse proxy จาก
127.0.0.1 ไปยังพอร์ตที่กำหนด
ตั้งค่ารีไดเร็กชันด้วย dnsmasq
ตั้งค่า reverse proxy ด้วย Caddy และสคริปต์ localhost
ทดสอบการทำงานจริง
2 ความคิดเห็น
ถ้าไม่ใช่กรณีที่เข้าไม่ถึงเครือข่ายภายนอก ผมจะใช้ Wildcard DNS อย่าง NIP.IO มากกว่าครับ
ความคิดเห็นจาก Hacker News
เบราว์เซอร์มอบ security context ให้กับโดเมน
.localhost.internalที่เพิ่งได้รับการอนุมัติล่าสุดได้สนิปเพ็ตการตั้งค่า nginx สำหรับการพัฒนาแบบโลคัลนั้นเรียบง่าย
Chrome และ Firefox จะ resolve ทุกโดเมน
<name>.localhostไปยัง localhost โดยค่าเริ่มต้นโปรเจกต์ Localias มีประโยชน์สำหรับการพัฒนาเว็บแบบโลคัล
.localจากอุปกรณ์อื่นในเครือข่ายได้/etc/hostsด้วยตนเองซับโดเมนของ
.localhostใช้งานได้โดยค่าเริ่มต้นบน Linux, OpenBSD เป็นต้น/etc/hostsอย่างชัดเจนหากใช้ Caddy แนะนำให้ใช้โดเมนที่ซื้อมาและ DNS-01 challenge
บางคนก็ใช้ vanity domain ในเครือข่ายส่วนตัว
สามารถกำหนดที่อยู่ IP แยกให้แต่ละแอปที่โฮสต์แบบโลคัลได้
127.0.0/24ได้บนระบบ Linux จะทำงานได้โดยค่าเริ่มต้นผ่าน systemd-resolved