การดูไซต์ที่โฮสต์ IIS ของฉันบนเครื่องอื่น ๆ บนเครือข่ายของฉัน


102

ที่บ้านฉันมีการตั้งค่าเครือข่ายง่ายๆที่มี 2 เครื่อง

ในเครื่องเดียวฉันมีไซต์ที่โฮสต์กับ IIS7 แต่กว่ามาตรฐานlocalhost/index.htmอยู่ผมได้เพิ่มรายการในHOSTSแฟ้มชี้ IP ท้องถิ่น (127.0.0.1) โดเมนนี้ www.mysite.dev-

ฉันสามารถเข้าถึงไซต์ได้www.mysite.devโดยไม่มีปัญหา

สิ่งที่ฉันต้องการทำคือสามารถดูไซต์นี้จากเครื่องอื่นของฉันบนเครือข่าย

ในตอนแรกฉันคิดว่าสิ่งนี้สามารถทำได้ด้วย URL เช่นนั้น MACHINE-NAME/www.mysite.devแต่การเชื่อมต่อจะหมดเวลาเสมอ แต่ฉันสามารถ ping ได้MACHINE-NAMEโดยไม่มีปัญหา

สำหรับวัตถุประสงค์ในการทดสอบฉันได้ปิดใช้งานไฟร์วอลล์ windows บนทั้งสองเครื่อง แต่ไม่มีความสุข

เช่นเดียวกับนักพัฒนาเว็บทั่วไปทักษะด้านฮาร์ดแวร์ / เครือข่ายของฉันค่อนข้างแย่

มีใครเห็นบ้างไหมว่าฉันทำอะไรผิด?


คุณได้ลองเชื่อมต่อกับMACHINE-NAME แล้วหรือยัง?
ลาซารัส

คำตอบ:


155

เป็นคนอื่น ๆ กล่าวว่าความต้องการไฟร์วอลล์ของคุณจะได้รับการกำหนดค่าให้รับสายเรียกเข้าในพอร์ต TCP 80

ในการชนะ 7+ (วิธีเล่นเวทง่ายๆ)

  1. ไปที่ไฟร์วอลล์ windows พร้อมความปลอดภัยขั้นสูง
  2. กฎขาเข้า -> การดำเนินการ -> กฎใหม่
  3. เลือกปุ่มตัวเลือกที่กำหนดไว้ล่วงหน้าจากนั้นเลือกรายการสุดท้าย - บริการ เวิลด์ไวด์เว็บ (HTTP)
  4. คลิกถัดไปและออกจากขั้นตอนต่อไปตามที่เป็นอยู่ ( อนุญาตการเชื่อมต่อ )

  • เนื่องจากการรับส่งข้อมูลขาออก (จากเซิร์ฟเวอร์สู่โลกภายนอก) ได้รับอนุญาตโดยค่าเริ่มต้นหมายถึงตัวอย่างเช่นการตอบสนอง http ที่เว็บเซิร์ฟเวอร์ส่งกลับไปยังผู้ใช้ภายนอกและคำขอ

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

คุณยังสามารถดูกฎขาเข้าและขาออกอย่างละเอียดได้ที่หน้านี้


หากยังใช้งานไม่ได้คุณสามารถปิดไฟร์วอลล์เองได้อย่างน้อยก็สำหรับสภาพแวดล้อมการพัฒนา
USER_NAME

@Contristo ความรู้สึกของฉันเป๊ะ :)
ไบรอันเรย์เนอร์

1
@hitesh คุณจะต้องเปิดพอร์ต 80 ผ่านไฟร์วอลล์ที่เปิดอยู่เท่านั้น หากคุณไม่มีสิทธิ์แม้แต่จะเพิ่มพอร์ตคุณควรขอให้ทีมสนับสนุนที่เกี่ยวข้องเปิดพอร์ตนี้สำหรับเซิร์ฟเวอร์นี้ให้คุณ
Iman

1
@Hitesh: คุณสามารถโฮสต์ไซต์ของคุณบนพอร์ตอื่นที่ไม่ใช่ 80 และอนุญาตเฉพาะพอร์ตนั้นสำหรับคุณ ดูคำตอบของฉันด้านล่างเกี่ยวกับวิธีการทำ
Syed Ali Taqi

1
การเข้าถึงอย่างรวดเร็วของ Windows Firewall ที่มีการรักษาความปลอดภัยขั้นสูง: Win + R mmc.exe wf.mscแล้วพิมพ์
mekb

35

หากคุณโฮสต์เว็บไซต์บนพอร์ตเฉพาะใน IIS เช่น4321คุณจะต้องอนุญาตพอร์ตนี้ผ่าน Windows Firewall ด้วย นี่คือขั้นตอนที่ฉันทำตามพร้อมกับคำตอบของ imanabidiเพื่อให้ได้ผลสำหรับฉัน:

  1. Windows Firewall> การตั้งค่าขั้นสูง
  2. กฎขาเข้า> กฎใหม่
  3. เลือกพอร์ต> ถัดไป
  4. เฉพาะพอร์ตในเครื่อง> เพิ่มพอร์ตที่คุณต้องการอนุญาต
  5. อนุญาตการเชื่อมต่อทั้งหมด
  6. ป้อนชื่อและคำอธิบายเพื่อให้คุณจำได้ในภายหลัง
  7. เสร็จแล้ว

10

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

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

นอกจากนี้ไฟร์วอลล์ของคุณจะต้องได้รับการกำหนดค่าให้รับสายเรียกเข้าบนพอร์ต 80

โดยปกติจะเป็นจุดที่เหมาะสมกว่าในการตั้งค่าบริการ DNS ที่คุณสามารถลงทะเบียนชื่อเช่น "mysite.dev" ด้วยส่วนกลางโดยไม่ต้องตะลุยไฟล์โฮสต์ แต่นั่นเป็นเรื่องที่ต่างออกไปและเป็นของ superuser.com หรือ serverfault.com


1
ไฟร์วอลล์เป็นส่วนสำคัญที่สุดที่นี่
ปิแอร์

6

เปิดการตั้งค่าไฟร์วอลล์ จากนั้นค้นหาสิ่งที่ต้องการ - อนุญาตให้โปรแกรมหรือคุณสมบัติอนุญาตผ่านไฟร์วอลล์ หากในรายการบริการเวิลด์ไวด์เว็บ (HTTP) ไม่ถูกเลือกให้ตรวจสอบและเริ่มระบบใหม่

เครื่องของเราพร้อมรับคำขอขาเข้าแล้ว


3

คำตอบที่ช้ามาก แต่ฉันจะเน้นบางประเด็นเนื่องจากฉันต้องจัดการกับมันเมื่อหลายปีก่อนการตั้งค่าไซต์ IIS ของฉันผ่านเครือข่าย

  1. เครื่องของคุณทั้งสองเครื่องควรเชื่อมต่อกับเครือข่ายเดียวกัน (เครือข่ายไร้สายเดียวกันใช้ได้)
  2. เข้าถึงเครื่องระยะไกลของคุณผ่าน IP 168.192.x.xหรือผ่านhttp://his-pc-name(อย่าลืมส่วน http)
  3. นี่จะเซิร์ฟเวอร์เพจ IIS เริ่มต้นบนเครื่องระยะไกล (เช่นเดียวกับที่ให้บริการผ่าน localhost) หากคุณต้องการเซิร์ฟเวอร์ไซต์อื่น [คุณต้องทำให้เป็นค่าเริ่มต้น] ก่อน1 .

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


การใช้ IP แทนชื่อเวิร์กสเตชันของฉันใช้งานได้ ไชโย!
hatsrumandcode

3

นอกจากการแก้ไขไฟร์วอลล์ของคุณแล้วอย่าลืมเพิ่มการเชื่อมพอร์ตด้วย!

เปิด$(SolutionDir)\.vs\config\applicationHost.configและค้นหาคำจำกัดความที่มีผลผูกพันควรเป็นแบบนี้

<sites>
    <site name="Samples.Html5.Web" id="1">
        <application path="/" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\Git\Samples.Html5.Web" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:63000:localhost" />
        </bindings>
    </site>
    ...
</sites>

เพียงเพิ่มบรรทัดพิเศษเพื่อแสดง IP เครื่องของคุณและพอร์ตที่กำหนด

<bindings>
    <binding protocol="http" bindingInformation="*:63000:localhost" />
    <binding protocol="http" bindingInformation="*:63000:10.0.0.201" />
</bindings>

ที่มา: https://blog.falafel.com/expose-iis-express-site-local-network/


2
Port Binding เป็นขั้นตอนที่สำคัญสำหรับฉัน! ฉันใช้ IIS Express ซึ่งจะไม่อนุญาตให้เข้าถึงผ่านที่อยู่ IP โดยค่าเริ่มต้น (เฉพาะ localhost) ดังนั้นหากไม่มีขั้นตอนนี้คำตอบที่ได้รับคะแนนสูงกว่าก็จะไม่ได้ผลสำหรับฉัน!
JonoB

2
 Control Panel>System and Security>Windows Firewall>Allowed Programs-> then check all " World Wide Web Services(Http) tab". 

มันใช้ได้ผลสำหรับฉัน


2

อาจจะสายไป แต่สำหรับบุคคลอื่นที่อาจได้รับปัญหาดังกล่าวในอนาคตสำหรับการเชื่อมต่อใด ๆ ที่คุณต้องการเชื่อมต่อกับเซิร์ฟเวอร์ (ในกรณีนี้คือเครื่องที่โฮสต์เว็บแอปพลิเคชันไม่ว่าจะเป็น iis หรือ xampp) คุณ จำเป็นต้องอนุญาตการเชื่อมต่อหรือการรับส่งข้อมูลผ่านพอร์ตเฉพาะที่จะใช้ในไฟร์วอลล์

1. Go to Windows Firewall -> Advanced settings
2. Click Inbound Rules -> Then New Rule
3. Select Port -> Next
4. Specific local ports -> Add the Port you want to allow
5. Allow All Connections
6. Enter a name and a description for to help you remember later on

และคุณทำเสร็จแล้ว


1

หลังจากติดตั้งโปรแกรมป้องกันไวรัสฉันประสบปัญหานี้และฉันสังเกตเห็นว่าไฟร์วอลล์ของฉันตั้งค่าเป็นเปิดโดยอัตโนมัติตอนนี้ฉันเพิ่งปิดไฟร์วอลล์ และแก้ไขปัญหาของฉันได้ หวังว่ามันจะช่วยใครสักคน :)


0

127.0.0.1 ชี้ไปที่ localhost เสมอ บนเครือข่ายในบ้านของคุณคุณควรมีที่อยู่ IP ที่กำหนดโดยเราเตอร์อินเทอร์เน็ตของคุณ (dsl / cablemodem / อะไรก็ตาม) คุณต้องผูกเว็บไซต์ของคุณกับที่อยู่นี้ จากนั้นคุณควรจะสามารถใช้ชื่อเครื่องเพื่อเข้าสู่เว็บไซต์ได้ แต่ฉันอยากจะแนะนำให้แก้ไขไฟล์โฮสต์ของคอมพิวเตอร์ไคลเอนต์ที่เป็นปัญหาเพื่อชี้ชื่อเฉพาะที่คอมพิวเตอร์เครื่องนั้น ไฟล์โฮสต์สามารถพบได้ที่ c: \ windows \ system32 \ drivers \ etc \ hosts (ใช้ notepad) และรายการจะมีลักษณะดังนี้:

192.168.1.1     mycomputername

@JenishZinzuvadiya: อะไรนะ? ความคิดเห็นของคุณไม่สมเหตุสมผล
Joel Etherton

-1

คุณต้องทำตามขั้นตอนต่อไปนี้

ไปที่ IIS ->
Sites->
คลิกที่เว็บไซต์ของคุณ ->
ในการดำเนินการคลิกที่แก้ไขสิทธิ์ ->
ความปลอดภัย ->
คลิกที่เพิ่ม ->
ขั้นสูง ->
ค้นหาทันที ->
เพิ่มผู้ใช้ทั้งหมดในนั้น ->
และให้สิทธิ์ทั้งหมด ให้กับผู้ใช้รายอื่น ->
คลิกตกลง

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.