Làm thế nào để các trang web chia sẻ cùng một địa chỉ IP?


7

Tôi luôn bối rối trước ý tưởng rằng nhiều trang web chia sẻ cùng một địa chỉ IP. Ý tôi là nếu có một máy chủ web ngoài đó có địa chỉ IP. Tôi có thể chỉ cần nhập địa chỉ IP này bằng cổng bên phải như 80 và cổng đích biết máy chủ nào sẽ chuyển tiếp yêu cầu đến này. Trường hợp này, cổng 80 là máy chủ web và trang web được cung cấp cho khách hàng.

Tuy nhiên, tôi không hiểu làm thế nào hai trang web có thể được lưu trữ trên máy chủ web và một địa chỉ IP. Giả sử hai trang web có tên abc.com và xyz.com được lưu trữ trên cùng một máy chủ web với một địa chỉ IP. Máy chủ DNS mà tôi sử dụng như một máy chủ từ ISP của tôi có thể giải quyết các tên với địa chỉ IP tốt, chỉ trình duyệt web của tôi đến máy chủ web chính xác, nhưng sự nhầm lẫn của tôi là làm thế nào máy chủ web biết trang web nào sẽ phục vụ?

Tôi luôn nghĩ rằng cách duy nhất để phân biệt giữa các trang web khác nhau trên cùng một máy chủ web là số cổng tương ứng của chúng. Nói cách khác, nếu yêu cầu đến nằm ở cổng 80, thì đó là abc.com và nếu là cổng 81 thì đó là xyz.com. Rõ ràng, tôi không đưa xyz.com:81 vào trình duyệt web của mình để nó sử dụng cổng 80 theo mặc định. Vậy thì tại sao tôi lại nhận được trang web xyz.com thực tế chứ không phải abc.com?

Câu trả lời:


13

Phần mềm máy chủ web xem tên máy chủ trong yêu cầu HTTP và sử dụng tên đó để xác định trang web nào sẽ phục vụ. Ví dụ, Apache có NameVirtualHosttùy chọn cấu hình điều khiển hành vi này. Bạn có thể tìm thấy lời giải thích chi tiết về cách thức hoạt động của quy trình này trong tài liệu của mình: https://httpd.apache.org/docs/2.2/vhosts/name-basing.html


6
  1. Máy khách Web, thường là trình duyệt, mở ổ cắm TCP đến máy chủ.
  2. Phần mềm máy chủ chấp nhận kết nối mà không biết trang web cụ thể được yêu cầu và chờ yêu cầu HTTP xảy ra.
  3. Máy khách gửi yêu cầu, chủ yếu bao gồm các tiêu đề HTTP. Một trong những tiêu đề này là Host: example.comtiêu đề, tại thời điểm này, máy chủ nhận biết đúng trang web yêu cầu này và thực hiện yêu cầu theo các cài đặt máy chủ tương ứng ... Có thể là một khối máy chủ trong nginx hoặc máy chủ ảo định nghĩa trong apache ..

0

Về cơ bản, không đi sâu vào cơ chế thực tế, về cơ bản, máy chủ DNS phân giải tên miền abc.com và xyz.com thành một địa chỉ IP mà cả hai miền chia sẻ sẽ đưa địa chỉ IP được chia sẻ này trở lại trình duyệt web. Trình duyệt web sau đó thực hiện một yêu cầu HTTP đến địa chỉ IP này và cuối cùng đến máy chủ web lưu trữ hai trang web này (và có lẽ nhiều hơn nữa). Ngoài ra, vì đây là yêu cầu HTTP, nên có thêm thông tin ngoài địa chỉ IP khi yêu cầu này đến máy chủ web, cụ thể là gói tiêu đề có tên thật abc.com hoặc xyz.com hoặc bất kỳ tên miền nào khác mà máy chủ web này lưu trữ. Sử dụng gói tiêu đề HTTP này, máy chủ web biết chính xác trang web nào sẽ phục vụ. HTTP đóng gói các gói dữ liệu bao gồm một số thông tin văn bản ASCII ngoài địa chỉ IP.

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.