ฉันจะใช้ 'netsh http add urlacl' ในสถานการณ์ใดบ้าง


14

ฉันพยายามเข้าใจว่าสถานการณ์ใดที่ฉันต้องใช้คำสั่งดังกล่าว:

netsh http add urlacl url=http://server1:1234/ user=Everyone

มันเหมือนกับการใช้hostsไฟล์ที่ฉันสามารถเชื่อมต่อที่อยู่เฉพาะกับคอมพิวเตอร์ของฉันได้หรือไม่? (ฉันไม่คิดอย่างนั้น)

เอกสารที่ไม่ชัดเจน (ผม):

Netsh เป็นยูทิลิตี้การเขียนสคริปต์บรรทัดคำสั่งที่ช่วยให้คุณสามารถแสดงหรือแก้ไขการกำหนดค่าเครือข่ายของคอมพิวเตอร์ที่ใช้งานอยู่ในปัจจุบันหรือจากระยะไกล Netsh ยังมีคุณสมบัติการเขียนสคริปต์ที่ช่วยให้คุณสามารถเรียกใช้กลุ่มคำสั่งในโหมดแบตช์กับคอมพิวเตอร์ที่ระบุ Netsh ยังสามารถบันทึกสคริปต์การกำหนดค่าในไฟล์ข้อความเพื่อวัตถุประสงค์ในการเก็บถาวรหรือเพื่อช่วยคุณกำหนดค่าเซิร์ฟเวอร์อื่น ๆ

คำถาม:

ใครช่วยกรุณาเล่าสถานการณ์ชีวิตจริง (+ การนำไปใช้) ที่ฉันจะใช้

ข้อมูลเพิ่มเติม: ฉันได้อ่านคำถามนี้ว่ามีคนที่พยายามเข้าถึง (ผ่าน C #) ไปที่:

http://localhost:1234 ทำงานได้ แต่

http://server1:1234 ล้มเหลว

(อย่างไรก็ตาม - ฉันไม่เข้าใจว่าทำไมเขาไม่ใช้hostsไฟล์ที่สามารถแก้ไขได้) - แต่แล้วคนอื่นก็ตอบว่าnetshจะทำงาน
ดังนั้นฉันคิดว่าฉันขาดอะไรที่นี่


ฉันรู้ว่าไฟล์โฮสต์ใช้สำหรับทำทุกวันในช่วง 1 ปีที่ผ่านมาอย่างสมบูรณ์แบบ ฉันไม่เข้าใจว่ารหัสในคำถามของฉันแตกต่างจากไฟล์โฮสต์อย่างไร ดูเหมือนว่าพวกเขาทั้งสองทำแบบเดียวกัน และน่าเศร้าที่คุณไม่ได้ให้คำตอบที่แตกต่าง
Royi Namir

คำตอบ:


18

คุณจะใช้netsh httpเมื่อแก้ไขการกำหนดค่าhttp.sysซึ่งแตกต่างจากhostsไฟล์อย่างสิ้นเชิงโดยทำงานบน Windows ในระดับที่ต่ำกว่ามาก ระดับนี้เป็นระดับที่จัดการการทำงานของเซิร์ฟเวอร์ HTTP ในเครื่องคอมพิวเตอร์ของคุณดังนั้นจึงเกี่ยวข้องกับคำขอที่เข้ามาในคอมพิวเตอร์ของคุณแทนที่จะเป็นสิ่งที่ออกไปสู่อินเทอร์เน็ต

นี่คือสถาปัตยกรรมใน Windows สำหรับการให้บริการคำขอ URL:

สถาปัตยกรรม http.sys

http.sys เป็นไดรเวอร์ที่รับฟังทราฟฟิก HTTP และจัดส่งคำร้องขอตาม URL ไปยังกระบวนการดังนั้นหลายกระบวนการสามารถรับฟังทราฟฟิก HTTP บนพอร์ตเดียวกัน

http.sysเปิดตัวใน Windows Server 2003 ก่อนหน้านี้แอปพลิเคชั่นเพิ่งเปิดซ็อกเก็ตบนอุปกรณ์ปลายทาง (IP: พอร์ต) ฟังการรับส่งข้อมูลขาเข้าและแยกวิเคราะห์ ปัญหาคือสิ่งนี้ทำให้เป็นไปไม่ได้ที่แอปพลิเคชันทั้งหมดจะใช้พอร์ต 80 (http) และ 443 (https) เช่นเดียวกับโมเดลซ็อกเก็ตมีเพียงแอปพลิเคชั่นเดียวเท่านั้นที่สามารถรับฟังปลายทางได้ในเวลาใดก็ตาม

เมื่อบริการข้อมูลทางอินเทอร์เน็ต (IIS) เว็บเซิร์ฟเวอร์หรือโปรแกรมใด ๆ ที่ใช้ HTTP Server API ฟังบนเส้นทางการร้องขอ HTTP บางพวกเขาจำเป็นต้องลงทะเบียนคำนำหน้า URL http.sysบน เราเรียกกระบวนการนี้ลงทะเบียน

เมื่อมีการร้องขอเข้ามาจะถูกเลือกโดยhttp.sysและมันจะถูกส่งไปยังโปรแกรมประยุกต์ที่ลงทะเบียนที่ถูกต้องนี้จะเรียกว่าการกำหนดเส้นทาง

แอปพลิเคชันใด ๆ ที่ทำงานในโหมดผู้ดูแลระบบสามารถลงทะเบียน URL ได้ แอปพลิเคชันที่ไม่ใช่ผู้ดูแลระบบจำเป็นต้องใช้netsh http add urlacl เพื่อรับคำขอ

สรุป: เนื่องจากคุณจะไม่ได้รับการสร้างเซิร์ฟเวอร์ URL netsh http add urlaclที่ระดับต่ำทำงานในโหมดที่ไม่ใช่ผู้ดูแลระบบคุณมีเหตุผลที่จะใช้ไม่ได้

การอ้างอิง:


คุณช่วยอธิบายสถานการณ์ที่มีลักษณะดังนี้: "ผู้ใช้ต้องการเชื่อมต่อกับ iis ของคุณด้วย .... "
Royi Namir

นี่เป็นวิธีการที่แอพพลิเคชั่นจะทำงานร่วมกับ IIS ได้แบบคู่ขนาน ถ้ามันลงทะเบียนสำหรับคำนำหน้า URL แอปพลิเคชันจะได้รับคำขอทั้งหมดโดยตรงและไม่ผ่าน IIS ซึ่งหมายความว่าไม่จำเป็นต้องเขียนเป็นส่วนขยายของ IIS และคุณจำเป็นต้องติดตั้ง IIS (นี่คือในทฤษฎี - ฉันไม่ได้ ' ไม่ทราบว่าในทางปฏิบัติแล้ว http.sys เป็นอิสระจาก IIS)
harrymc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.