Tôi có thể định cấu hình tệp máy chủ Windows để sử dụng địa chỉ IP cộng với cổng không?


13

Tôi muốn định cấu hình tệp máy chủ Windows để gửi yêu cầu máy chủ dựa trên địa chỉ IP + cổng.

Ví dụ:

127.0.0.1:80       www.site1.com
127.0.0.1:8080     www.sitetwo.com

Bởi vì tôi có Apache lắng nghe trên cổng 8080 và IIS trên cổng 80 (mặc định).

Vì vậy, tôi nghĩ cách tốt nhất để làm điều này là sửa đổi hoststập tin. Nó không ảnh hưởng gì cả. Tôi không nhận được bất kỳ lỗi cũng như bất kỳ tin nhắn.


1
Bạn sẽ nhận được câu trả lời tốt hơn khi hỏi loại câu hỏi này trên serverfault.com
Carl Norum

Tại sao bạn không thể khởi chạy site1.com (: 80)sitetwo.com:8080 trong trình duyệt của bạn?
Yvan

Câu trả lời:


11

Bạn không thể. Các tập tin máy chủ chỉ là đó - máy chủ lưu trữ. Nó tương đương với DNS "ngắn mạch" trong máy cục bộ của bạn. DNS cũng không thể gửi bạn đến các cổng.

Để đạt được những gì bạn đang cố gắng thực hiện, bạn sẽ muốn thiết lập lưu trữ ảo trong IIS hoặc Apache và sử dụng điều đó (dựa trên tiêu đề HTTP Host:) để cho phép dịch vụ quyết định trang web nào sẽ xuất hiện. Tuy nhiên, điều này sẽ không giúp bạn nếu bạn muốn làm điều này với cả IIS và Apache.


bạn có thể vui lòng rõ ràng, tôi không hiểu về lưu trữ ảo. Làm thế nào tôi có thể làm lưu trữ ảo?

4
  • Các hoststập tin chỉ dành cho độ phân giải tên máy chủ
  • Các trình duyệt , trong trường hợp không trực tiếp xác định các cổng: ví dụ <hostname>:<port>, giá trị mặc định cho cổng80

Kịch bản vấn đề điển hình

  1. các ứng dụng thường đặt máy chủ của họ thành cùng một địa chỉ IP mặc định 127.0.0.1aka localhost (được xác định trong tệp máy chủ) .
  2. để tránh xung đột giữa các máy chủ hiện có / đang chạy khác, ứng dụng thường cho phép bạn thay đổi cổng, nhưng không phải là địa chỉ IP.

    2a. Nếu bạn có thể thay đổi địa chỉ IP của máy chủ thành địa chỉ khác trong không gian địa chỉ dành riêng cho loopback 127.0.0.0/8 , thì có lẽ bạn sẽ không cố gắng đặt cổng trong tệp máy chủ.

Giải pháp có thể

Bạn có thể giải quyết vấn đề này bằng cách sử dụng Windows bao gồm công cụ Mạng netshlàm proxy cổng.


Tổng quat

example.app
 |                               <--browser defaults to port 80
 +--> example.app:80
       |                         <--Hostname resolution by Hosts File
       +--> 127.65.43.21:80      
             |                   <--Link by netsh Utility
             +--> 127.0.0.1:8081

Hành động

  • Bắt đầu máy chủ của bạn trên localhost:8081
  • Thêm "DNS cục bộ" trong tệp máy chủ dưới dạng một dòng mới
    • 127.65.43.21 example.app
      • Bất kỳ địa chỉ miễn phí trong mạng 127.0.0.0/8có thể được sử dụng.
      • Lưu ý: Tôi giả sử127.65.43.21:80không bị chiếm bởi dịch vụ khác.
      • Bạn có thể kiểm tra với netstat -a -n -p TCP | grep "LISTENING"
  • thêm cấu hình mạng sau với tiện ích lệnh Netsh
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • Truy cập máy chủ tại http://example.app

Lưu ý:
- Những sửa đổi lệnh / tệp này cần được thực thi với quyền Quản trị viên

- Netsh portproxy cần các thư viện ipv6 thậm chí chỉ để sử dụng v4tov4, thông thường chúng cũng sẽ được bao gồm theo mặc định, nếu không thì cài đặt chúng bằng lệnh sau:netsh interface ipv6 install


Bạn có thể thấy mục bạn đã thêm bằng lệnh:

netsh interface portproxy show v4tov4

Bạn có thể xóa mục nhập bằng lệnh sau:

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21


Liên kết đến Tài nguyên:

Lưu ý: câu trả lời này là một bản sao câu trả lời của tôi được thảo luận trong câu hỏi / câu trả lời tương tự này trên stackoverflow.


Đây là một câu trả lời tuyệt vời ... cảm ơn các liên kết tài nguyên!
Eric Hepperle - CodeSlayer2010

3

Không, bạn không thể. Nếu nó không hoạt động, thì có gì đó không ổn.

127.0.0.1 site.com
127.0.0.1 www.site.com

Tôi giả sử đây là cho một hộp phát triển?

DNS sẽ phân giải trang web.com và www.site.com thành localhost miễn là bạn không làm gì đó như ủy quyền các truy vấn DNS của mình. Có lẽ bạn nên hỏi tại ServerFault để được trợ giúp cấu hình máy chủ web, đó là vấn đề rất có thể xảy ra.


Cảm ơn đã giúp đỡ!!! Nhưng không có cách nào ??? Sau đó, làm thế nào tôi có thể chạy iis và apache song song với các cổng khác nhau

Họ vẫn đang đi đến cùng một địa chỉ, cổng thậm chí không ảnh hưởng đến những gì máy chủ lưu trữ. Cổng vẫn sẽ hoạt động, bạn có thể chạy chúng song song.
Xorlev

3

Bạn có thể làm điều đó với Fiddler . Với kịch bản Fiddler , bạn có thể có nhiều điều tuyệt vời.

Nếu bạn đặt máy chủ như thế này

127.0.0.1     www.site1.com    # Port 80
127.0.0.1     www.sitetwo.com  # Port 8080

Thêm phần này vào CustomRules.js (để mở CustomRules.js , chọn Tùy chỉnh quy tắc trên menu Quy tắc của Fiddler )

// this method is already exist
static function OnBeforeRequest(oSession: Session) {  
    if (oSession.host.toLowerCase() == "www.sitetwo.com") 
        oSession.host = "www.sitetwo.com:8080";
    ...
}

Sau đó, Fiddler chuyển đổi máy chủ và bạn sẽ kết nối với cổng 8080.


Bạn có biết về bất kỳ sự thay thế nguồn mở nào (james, owasp zap hoặc khác) có thể được sử dụng cho cùng một hiệu ứng không?
Marc.2377

1

Bạn đang sử dụng các máy chủ chỉ để phát triển địa phương? Nếu vậy, bạn có thể đặt Apache của mình để nghe 127.0.0.2:80 và chuyển hướng nó với tệp máy chủ sang tên miền bạn thích.


0

Cũng như các tệp máy chủ câu trả lời khác không có thông tin cổng nhưng bạn có thể có một trang chuyển hướng sai lệch trên tiêu đề như apache hoặc IIS sẽ làm cho lưu trữ ảo dựa trên tên. Kiểm tra tiêu đề và chuyển hướng khi cần thiết. Tuy nhiên tôi không thực sự thấy giá trị trong việc này khi bạn đang phát minh lại bánh xe. Apache hỗ trợ lưu trữ ảo dựa trên cổng và tôi cho rằng iis cũng vậy.

Mục tiêu của bạn là có một cỗ máy phát triển với cả hai hoạt động của chúng tôi là điều này cho một tình huống sản xuất.



-1

Đây là những gì bạn có thể làm, nó sẽ chỉ hữu ích cho phát triển địa phương.

tập tin lưu trữ:

  • 127.0.0.1 local.site1.com
  • 127.0.0.1 local.site2.com

Trong IIS, tạo trang web mới và cho local.site1.com & local.site2.com

Thiết lập IIS

  • Địa chỉ IP: Tất cả chưa được gán (nó sẽ sử dụng máy chủ cục bộ hoặc bất kỳ ip có sẵn nào khác)
  • Cổng: bất kỳ cổng nào khác đang được sử dụng (81,82,83, v.v. 80 đã được sử dụng bởi Trang web mặc định)
  • Tên máy chủ: Để trống

Bạn tốt để đi. Chỉ cần đảm bảo rằng các cổng bạn đã sử dụng không được sử dụng bởi một số quy trình khác và cũng được mở từ tường lửa, chống vi-rút, v.v.

Sau này, bạn có thể sử dụng các url sau để truy cập các trang web từ máy cục bộ hoặc từ mạng LAN.

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.