- Chia sẻ kinh nghiệm thiết lập để có thể truy cập các web app đang phát triển bằng những địa chỉ đơn giản như
appname.localhost mà không cần nhớ các cổng như localhost:4333
- Hệ thống này giúp việc truy cập web app cục bộ trở nên trực quan và gọn gàng hơn nhiều
- Mỗi app chạy trên một cổng riêng dưới dạng daemon
launchd
- Trong tệp
/etc/hosts, chuyển hướng appname.localhost tới 127.0.0.1
- Ví dụ:
127.0.0.1 inclouds.localhost
- Dùng Caddy để proxy tên miền đó tới đúng cổng tương ứng
Ví dụ cấu hình Caddy
inclouds.localhost {
reverse_proxy localhost:5050
tls internal
encode gzip zstd
}
- Với mỗi tên miền
.localhost, viết cấu hình proxy tới cổng tương ứng trong Caddyfile
- Bao gồm cả chứng chỉ TLS nội bộ và hỗ trợ nén
Ý tưởng cải tiến trong tương lai
- Hiện tại vẫn phải chỉnh sửa thủ công ba tệp (
/etc/hosts, Caddyfile, launchd plist)
- Mục tiêu trong tương lai là tạo một công cụ tự động hóa để cài đặt/gỡ app vào tên miền
.localhost chỉ bằng một lệnh duy nhất
Cập nhật
- Cristóbal đã đề xuất một lệnh dựa trên dnsmasq, giúp quy trình này đơn giản hơn
- Ý tưởng cốt lõi như sau:
- Chuyển hướng toàn bộ
*.localhost tới 127.0.0.1
- Thiết lập một máy chủ thực hiện reverse proxy từ
127.0.0.1 tới các cổng cụ thể
Thiết lập chuyển hướng bằng dnsmasq
Thiết lập reverse proxy bằng Caddy và script localhost
Kiểm tra hoạt động thực tế
2 bình luận
Tôi thì nếu không phải môi trường không thể truy cập mạng ngoài, sẽ dùng Wildcard DNS như NIP.IO.
Ý kiến trên Hacker News
Trình duyệt cung cấp ngữ cảnh bảo mật cho miền
.localhost.internalmới được phê duyệt gần đâyĐoạn cấu hình nginx cho phát triển cục bộ khá đơn giản
Chrome và Firefox mặc định phân giải mọi miền
<name>.localhostthành localhostDự án Localias hữu ích cho phát triển web cục bộ
.localtrên các thiết bị khác trong mạng/etc/hostsCác miền con của
.localhosthoạt động mặc định trên Linux, OpenBSD, v.v./etc/hostsNếu dùng Caddy, nên sử dụng miền đã mua và DNS-01 challenge
Một số người cũng dùng vanity domain trong mạng cá nhân
internal.cho cấu hình mạng nội bộCó thể gán địa chỉ IP riêng cho từng ứng dụng được host cục bộ
127.0.0/24Trên hệ thống Linux, cách này hoạt động mặc định thông qua systemd-resolved