ฉันจะเข้าถึงเว็บเซิร์ฟเวอร์ในพื้นที่บนแล็ปท็อปของฉันจากคอมพิวเตอร์เครื่องอื่นได้อย่างไร [ปิด]


37

ฉันมีแอพทำงานบนคอมพิวเตอร์ที่ 127.0.0.1:3000

ฉันต้องการเข้าถึงแอพนั้นจาก iPhone ที่เชื่อมต่อกับเครือข่ายเดียวกัน ฉันเคยทำสิ่งนี้มาก่อน แต่ก็อธิบายให้ฉันฟัง ความคิดใด ๆ


2
ลองrails server -b 0.0.0.0แล้วเบราว์เซอร์นี้บน iPhone ของคุณ
zx1986

คำตอบ:


37

ก่อนอื่นคุณต้องกำหนดที่อยู่ IP หรือชื่อของเครื่องที่คุณใช้งานเว็บเซิร์ฟเวอร์ ฉันสมมติว่าคุณกำลังเรียกใช้เว็บเซิร์ฟเวอร์บน mac เนื่องจากคุณติดแท็กบทความของคุณmacosxคำแนะนำนั้นคล้ายกับเครื่อง Linux ดังนั้นบน mac ของคุณ:

  • Terminal.appเปิด Applications->Utilitiesมันอยู่ภายใต้
  • ทำงานifconfigในอาคารผู้โดยสาร นั่นแสดงให้คุณเห็นถึงการเชื่อมต่อเครือข่ายทั้งหมดบนเครื่อง หนึ่งในนั้นคือเครือข่ายที่เครื่องของคุณเชื่อมต่ออยู่ en0หากคุณแม็คอยู่บนการเชื่อมต่อแบบใช้สายที่ควรจะเป็น จดบันทึกที่อยู่หลังจากนั้นinet- ควรเป็นที่อยู่ที่เครื่องของคุณใช้
    • สมมติว่าคุณค้นพบว่ามันเป็น 192.168.10.1
  • nc -v 192.168.10.1 3000ตรวจสอบว่าคุณสามารถเชื่อมต่อไปยังที่อยู่ที่จากเซิร์ฟเวอร์ของคุณด้วย
    • Connection to 192.168.10.1 3000 port [tcp/http] succeeded!คุณควรจะเห็นข้อความเช่น
    • หากไม่ได้ผลให้ดูด้านล่าง
    • หากใช้งานได้ให้กดctrl-Cเพื่อออกจากเซสชัน nc
  • ตอนนี้ลองเชื่อมต่อกับเครื่องไคลเอนต์ของคุณ
    • หากนี่เป็นเว็บแอปคุณควรจะสามารถเชื่อมต่อผ่านเบราว์เซอร์
    • ตัวอย่างเช่นลองhttp://192.168.10.1:3000

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


เพื่อน 10 เท่า ... อะไรคือความแตกต่างเมื่อพูดถึงระบบที่ทำงานบน windows กับเซิร์ฟเวอร์ Wamp ที่อยู่บนนั้น ... มีความแตกต่างหรือไม่?
Sagive SEO

ฉันใช้ mac sierra ฉันสามารถเข้าถึงเซิร์ฟเวอร์จาก mac ของฉัน (ที่เซิร์ฟเวอร์กำลังทำงาน) ผ่านทาง10.55.18.22:3000แต่ไม่สามารถเข้าถึงได้จากเครื่องอื่นแม้ว่าทั้งคู่จะอยู่ในเครือข่ายเดียวกันก็ตาม ตัวเลือกการใช้เว็บร่วมกันไม่สามารถใช้ได้ในเซียร่า เราจะทำงานนี้ได้อย่างไร
santhosh kumar

saanthosh: ดูพอร์ตที่ส่งต่อบนเราเตอร์ของคุณ นั่นคือสิ่งที่ฉันทำก่อนที่ฉันจะค้นพบคุณสมบัติการแชร์อินเทอร์เน็ตของ OSX (ซึ่งเห็นได้ชัดว่าใช้ได้ตั้งแต่ OSX 10.6 เป็นอย่างน้อย) ฉันทำการทดสอบ localhost กับอุปกรณ์มือถือที่หลากหลายในห้อง / เครือข่ายเดียวกันกับเครื่อง OSX dev ของฉันซึ่งทำได้โดยการเปลี่ยนแปลงมาตรฐาน / การกำหนดค่าเราเตอร์เล็กน้อย (เช่นการส่งต่อพอร์ต) บทความอื่น ๆ และหัวข้อ SO ให้ข้อมูลเกี่ยวกับการกำหนดค่าเราเตอร์ ท้ายที่สุดฉันอยู่ในตำแหน่งใหม่ในขณะนี้และไม่สามารถเข้าถึงเราเตอร์ได้ดังนั้นฉันจึงใช้การแชร์อินเทอร์เน็ต OSX (High Sierra) เพื่อให้ได้สิ่งเดียวกัน
MarsAndBack

12

ค้นหาชื่อ Mac ของคุณโดยใช้hostname(ที่ Terminal prompt) และใช้ชื่อนั้นใน URL ของคุณ เช่นhttp: //Tonys-iMac.local: 3000 /

ถ้าด้วยเหตุผลบางอย่าง Bonjour ไม่ทำงานในสภาพแวดล้อมของคุณหาที่อยู่ของสนามบินบน iMac หรือ MacBook ด้วย

ipconfig getifaddr en1

หรือโดยทั่วไปด้วย

ipconfig getifaddr $(route -n get default|awk '/interface/ { print $2 }')


คำตอบนี้มีการเพิ่มประสิทธิภาพที่ดีเกี่ยวกับการหาชื่อโฮสต์และที่อยู่ IP ของคุณ
Phil Hollenback

2
ทำไม Bonjour ถึงไม่ทำงาน ฉันพบชื่อโฮสต์ของฉันคือ gm20152.local แต่เมื่อฉันลองgm20152.local: 3000บนเครื่องเดียวกันมันจะแสดงหน้าเว็บที่ถูกต้อง แต่เมื่อฉันลองgm20152.local: 3000บนโทรศัพท์ Android ของฉันเบราว์เซอร์บนโทรศัพท์ของฉันไม่สามารถหาโฮสต์ได้ ฉันคิดว่านี่เป็นเพราะโทรศัพท์ของฉันไม่มีวิธีทำแผนที่ gm20152.local ไปยังที่อยู่ ip ของ macbook ฉันจะทำสิ่งนี้ได้อย่างไร
gprasant

@gprasant การให้ Android ใช้ Bonjour ดูค่อนข้างยาก
James

5

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

นี่คือวิธีการทำ:

  1. Mac-> Sys Preferences-> Sharing-> เปิดใช้งานช่องทำเครื่องหมาย“ Web Sharing”
  2. Mac-> Sys Preferences-> Security-> อนุญาตให้แอปพลิเคชันของคุณ (เช่น ruby) ยอมรับการเชื่อมต่อขาเข้า
  3. เปิดพอร์ตบนเราเตอร์ (ผ่าน 192.168.1.1) เพื่อส่งต่อทราฟฟิกจาก your_web_ip: พอร์ตไปยัง local_gateway: พอร์ต

    1. เช่นจากการตั้งค่าเราเตอร์ของ Verizon ของฉัน -> การส่งต่อพอร์ต -> สร้างกฎ: ส่งต่อไปยังเกตเวย์ท้องถิ่น (เช่น 192.168.1.4), พอร์ตที่กำหนดเอง, โปรโตคอล TCP, แหล่งที่มา = ใด ๆ , ปลายทาง = 3280, ทุกประเภทการเชื่อมต่อ

เสร็จสิ้น ตอนนี้จากคอมพิวเตอร์ระยะไกลเปิดเบราว์เซอร์ของคุณไปยังที่อยู่ ip ของเว็บของคุณ (ค้นหาผ่านhttp://www.whatismyip.com/ ) + พอร์ตปลายทาง # ด้านบนเช่น 72.189.194.65:3280 สิ่งนี้จะเชื่อมต่อกับ 192.168.1.4 ในพื้นที่ของคุณ : 3000

หมายเหตุ: ฉันใช้ Mac OSX 10.7.5


2

127.0.0.1 เป็นที่อยู่ในระบบที่คอมพิวเตอร์ทุกเครื่องมีให้ คุณต้องค้นหาว่าที่อยู่ IP จริง (หรือชื่อโฮสต์ / Bonjour) ของเครื่องคืออะไร ไปที่การตั้งค่าระบบเครือข่ายและค้นหา IP ของเครื่องไม่ว่าจะเป็นพอร์ต Ethernet หากคุณใช้สายเคเบิลหรือสนามบินหากคุณใช้ WLAN จากนั้นเปิดที่อยู่นี้พร้อมกับ: ส่วนที่ 3000 ใน Safari บน iPhone


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

2

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

ตัวเลือกที่สองคือการใช้พร็อกซี

ตัวเลือกที่สามคือถ้าคุณสามารถ ssh จาก iphone คุณยังสามารถใช้การส่งต่อ ssh

ssh user @ host -L 3000: 127.0.0.1: 3000

จากนั้นใน iphone ของคุณเปิด 127.0.0.1:3000


1
AFAIK คุณไม่สามารถส่งต่อพอร์ต ssh บน iPhone ได้ ไม่ใช่ถ้าไม่ใช่การเจลเบรค
สเวน

ฟัง0.0.0.0! ฉันจะไม่คิดอย่างนั้นได้อย่างไร
Gustavo Straube

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