Thêm miền phụ vào URL máy chủ cục bộ


96

Tôi đang viết một ứng dụng web hoạt động khác nhau tùy thuộc vào tiền tố url. Định dạng như sau:

   https://myprefix.mycompany.com

Ứng dụng web hoạt động khác nhau dựa trên myprefix. Ứng dụng web của tôi trích xuất phần đó từ URL và hành động trên đó.

Tuy nhiên, khi tôi kiểm tra trên máy cục bộ của mình, tôi sử dụng địa chỉ localhost:

   https://localhost:1234

Tôi không làm điều gì đó như:

   https://myprefix.localhost:1234

Cách tốt nhất để tôi kiểm tra kịch bản này là gì?

Cảm ơn nhiều


Đây là giải pháp của sự cố này stackoverflow.com/a/29629675/2950006
Mickel Chowdhury

Câu trả lời:


137

Rất tiếc, vì localhostkhông phải là miền thích hợp, bạn không thể thêm miền phụ vào miền đó như vậy. Bạn có thể , tuy nhiên, máy tính của bạn lừa vào suy nghĩ nó sở hữu một tên miền cụ thể và những thứ thử nghiệm như vậy. Ví dụ: nếu bạn có hệ điều hành dựa trên UNIX, hãy mở (với tư cách gốc) tệp /etc/hostsvà thêm một dòng (hoặc các dòng) như sau:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com

Máy tính của bạn bây giờ sẽ coi cả hai example.comsubdomain.example.comlà thuộc về chính nó. Nếu bạn truy cập một trong hai trong trình duyệt web của mình, về nguyên tắc, chúng sẽ hoạt động giống nhau localhost, nhưng máy chủ web của bạn sẽ thấy tên miền chính xác trong tiêu đề Máy chủ của nó.


Rất cám ơn câu trả lời của bạn. Đây chính xác là những gì tôi muốn. Tuy nhiên, ứng dụng web của tôi chạy trên một cổng, chẳng hạn như 1234. Tôi đã tìm kiếm xung quanh và mọi người nói rằng không có cách nào để chỉ định số cổng trong / etc / hosts. Cách tốt nhất để chỉ định cổng là gì?
Kevin,

7
Bạn sẽ phải chỉ sử dụng cổng trong URL của bạn như bình thường, ví dụ http://subdomain.example.com:1234/whatever. Cổng hoàn toàn tách biệt với miền (miền được sử dụng để xác định máy, cổng được sử dụng để xác định chương trình nào trên máy để giao tiếp).
Matt Patenaude

Ngoài ra, nếu bạn có thể chạy phần mềm của mình dưới dạng root (để thử nghiệm), bạn chỉ có thể sử dụng cổng 80, là cổng mặc định, vì vậy bạn sẽ không phải chỉ định một cổng.
Matt Patenaude 29/09/13

3
Người ta chỉ có thể liệt kê các tên miền sau địa chỉ ip: 127.0.0.1 example.com sub.example.com sub2.example.com...
automaton

4
Điều này cũng hoạt động cho các cửa sổ. Các tập tin lưu trữ trên các cửa sổ nằm tại địa chỉ: C:\Windows\System32\drivers\etc\hosts. Bạn sẽ cần sao chép tệp sang một nơi khác có quyền thấp hơn, (như máy tính để bàn của bạn), để chỉnh sửa và sau đó dán lại vào thư mục (để xử lý các quyền đó).
Lindsay-Needs-Sleep

33

Tôi không chắc về hành vi tương tự ở cửa sổ. Tôi đang làm việc trên Linux mint.

Bạn có thể sử dụng lvh.me:portnhư một miền cục bộ. Bạn có thể tưởng tượng rằng dự án của bạn được triển khai trên localhost:portmiền này.

Thay vì sub.localhost:portbạn phải sử dụngsub.lvh.me:port

UPD

sub.localhost:porthoạt động tại chrome. Firefox tự động thêm www. ở đầu tên miền đã nhập có thể gây ra sự cố khi kiểm tra tên miền phụ


Tôi có thể xác nhận điều này cũng hoạt động trên Windows. Các trình duyệt Internet Explorer, Edge, Firefox và Chrome hoạt động hoàn hảo!
Jose A

Tôi đã sử dụng firefox và mẹo chrome đã lưu trong ngày của tôi, cảm ơn!
ZekeMidas

2
Để có thêm tính linh hoạt, bạn cũng có thể sử dụng các dịch vụ nio.io hoặc xip.io. Chúng cho phép ánh xạ bất kỳ địa chỉ IP nào tới bất kỳ miền phụ nào. Vì vậy, ví dụ: đồng nghiệp của bạn cũng có thể sử dụng cùng một URL để truy cập ứng dụng của bạn. Ví dụ: nếu địa chỉ IP của máy trạm của bạn là 172.16.0.42, bạn có thể sử dụng https://myprefix.myapp.172.16.0.42.nip.io:1234từ PC của mình hoặc từ các PC khác trong mạng nội bộ của mình.
mh8020,

5

Đối với người dùng Windows, dựa trên câu trả lời này và theo nhận xét này , bạn có thể đạt được điều này bằng cách thêm cổng vào localhost thông qua tệp máy chủ lưu trữ tại đường dẫn này:

C:\Windows\System32\drivers\etc\hosts

Và nối các dòng như sau vào nó:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com

1

Giải pháp một dòng cho Windows

Mở PowerShell với tư cách Quản trị viên và chạy lệnh sau, thay thế sub.mydomain.combằng bất kỳ lệnh nào bạn muốn.

"`n127.0.0.1    sub.mydomain.com" | Out-File C:\Windows\System32\drivers\etc\hosts -encoding ASCII -append

Phá vỡ:

  • `n - dòng mới
  • 127.0.0.1 - địa chỉ lặp lại
  • sub.mydomain.com - tên miền
  • | Out-File C:\Windows\System32\drivers\etc\hosts - nối chuỗi đến hosts
  • -encoding ASCII - mã hóa đúng
  • -append- nối vào cuối tệp (quan trọng!)

0

Bạn nên sử dụng .testmiền cho những thứ như vậy. Đó là những gì .testdành cho. localhostkhông được phép có bất kỳ tên miền phụ nào.

Làm như vậy vi phạm các tiêu chuẩn RFC đã được phê duyệt. localhostcó bản ghi A và trong môi trường IPv6, bản ghi AAAA. Tất cả các loại bản ghi DNS khác, bao gồm cả SOA đều bị cấm.

Nếu không có bản ghi SOA, nó không thể là đỉnh vùng có các bản ghi phụ, vì vậy không cho phép miền phụ hoặc ủy quyền. Ngay cả bản nháp RFC gần đây có tiêu đề Hãy để localhost là localhost cũng phù hợp với điều này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.