hosts
ไฟล์สำหรับการจำแนกชื่อโฮสต์เท่านั้น
- เบราว์เซอร์ในกรณีที่ไม่มีการระบุโดยตรงพอร์ต: IE
<hostname>:<port>
, ค่าเริ่มต้นไปยังท่าเรือ80
สถานการณ์ปัญหาทั่วไป
- การใช้งานมักจะตั้งเซิร์ฟเวอร์ของพวกเขาไปยังที่อยู่ IP เริ่มต้นเดียวกัน
127.0.0.1
อาคา(ที่กำหนดไว้ในไฟล์โฮสต์)localhost
เพื่อหลีกเลี่ยงการชนกันระหว่างเซิร์ฟเวอร์ที่มีอยู่ / ที่ใช้งานอยู่อื่น ๆ โดยทั่วไปแอปพลิเคชันจะอนุญาตให้คุณเปลี่ยนพอร์ต แต่ไม่ใช่ที่อยู่ IP
2a หากคุณสามารถเปลี่ยนที่อยู่ ip ของเซิร์ฟเวอร์เป็นที่อยู่อื่นในพื้นที่ที่อยู่สำรองที่สำรอง 127.0.0.0/8
แล้วคุณอาจจะไม่พยายามตั้งค่าพอร์ตในไฟล์โฮสต์
ทางออกที่เป็นไปได้
คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดยใช้เครื่องมือWindows ที่มีระบบเครือข่ายnetsh
เป็นพอร์ตพร็อกซี่
ภาพรวม
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
การปฏิบัติ
- เริ่มต้นเซิร์ฟเวอร์ของคุณ
localhost:8081
- เพิ่ม "local DNS" ในไฟล์โฮสต์เป็นบรรทัดใหม่
127.65.43.21 example.app
- ที่อยู่ฟรีใด ๆ ในเครือข่าย
127.0.0.0/8
สามารถใช้ได้
- หมายเหตุ:ฉันสมมติ
127.65.43.21:80
ว่าไม่ได้ใช้บริการอื่น
- คุณสามารถตรวจสอบกับ
netstat -a -n -p TCP | grep "LISTENING"
- เพิ่มการกำหนดค่าเครือข่ายต่อไปนี้ด้วยยูทิลิตี
คำสั่ง netsh
netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
- เข้าถึงเซิร์ฟเวอร์ที่
http://example.app
หมายเหตุ:
- คำสั่ง / การแก้ไขไฟล์เหล่านี้จะต้องดำเนินการด้วยสิทธิ์ผู้ดูแลระบบ
- netsh portproxy ต้องการไลบรารี่ ipv6เพียงเพื่อใช้ v4tov4 โดยปกติแล้วพวกเขาจะถูกรวมไว้โดยค่าเริ่มต้นมิฉะนั้นติดตั้งพวกเขาโดยใช้คำสั่งต่อไปนี้:netsh interface ipv6 install
คุณสามารถดูรายการที่คุณเพิ่มด้วยคำสั่ง:
netsh interface portproxy show v4tov4
คุณสามารถลบรายการด้วยคำสั่งต่อไปนี้:
netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21
ลิงค์ไปยังแหล่งข้อมูล:
หมายเหตุ: คำตอบนี้ซ้ำคำตอบของฉันกล่าวถึงในคำถาม / คำตอบที่คล้ายกันนี้ใน stackoverflow