ฉันมีแอพทำงานบนคอมพิวเตอร์ที่ 127.0.0.1:3000
ฉันต้องการเข้าถึงแอพนั้นจาก iPhone ที่เชื่อมต่อกับเครือข่ายเดียวกัน ฉันเคยทำสิ่งนี้มาก่อน แต่ก็อธิบายให้ฉันฟัง ความคิดใด ๆ
ฉันมีแอพทำงานบนคอมพิวเตอร์ที่ 127.0.0.1:3000
ฉันต้องการเข้าถึงแอพนั้นจาก iPhone ที่เชื่อมต่อกับเครือข่ายเดียวกัน ฉันเคยทำสิ่งนี้มาก่อน แต่ก็อธิบายให้ฉันฟัง ความคิดใด ๆ
คำตอบ:
ก่อนอื่นคุณต้องกำหนดที่อยู่ IP หรือชื่อของเครื่องที่คุณใช้งานเว็บเซิร์ฟเวอร์ ฉันสมมติว่าคุณกำลังเรียกใช้เว็บเซิร์ฟเวอร์บน mac เนื่องจากคุณติดแท็กบทความของคุณmacosx
คำแนะนำนั้นคล้ายกับเครื่อง Linux ดังนั้นบน mac ของคุณ:
Terminal.app
เปิด Applications->Utilities
มันอยู่ภายใต้ifconfig
ในอาคารผู้โดยสาร นั่นแสดงให้คุณเห็นถึงการเชื่อมต่อเครือข่ายทั้งหมดบนเครื่อง หนึ่งในนั้นคือเครือข่ายที่เครื่องของคุณเชื่อมต่ออยู่ en0
หากคุณแม็คอยู่บนการเชื่อมต่อแบบใช้สายที่ควรจะเป็น จดบันทึกที่อยู่หลังจากนั้นinet
- ควรเป็นที่อยู่ที่เครื่องของคุณใช้
nc -v 192.168.10.1 3000
ตรวจสอบว่าคุณสามารถเชื่อมต่อไปยังที่อยู่ที่จากเซิร์ฟเวอร์ของคุณด้วย
Connection to 192.168.10.1 3000 port [tcp/http] succeeded!
คุณควรจะเห็นข้อความเช่นctrl-C
เพื่อออกจากเซสชัน ncหากคุณไม่สามารถเชื่อมต่อกับแอปพลิเคชันของคุณบนที่อยู่จริงของเซิร์ฟเวอร์นั่นหมายความว่าแอปพลิเคชันของคุณไม่ฟังที่อยู่นั้น คุณจะต้องตรวจสอบวิธีการเปลี่ยนการกำหนดค่าแอปพลิเคชันของคุณเพื่อปรับเปลี่ยนพฤติกรรมดังกล่าว เนื่องจากฉันไม่รู้ว่าแอปพลิเคชันใดที่คุณใช้อยู่ฉันจึงไม่สามารถเสนอแนวคิดที่ดีใด ๆ
ค้นหาชื่อ 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 }')
โดยพื้นฐานจากการตั้งค่าไฟร์วอลล์คุณสามารถอนุญาตให้แอปพลิเคชั่นบางตัว (เช่นทับทิม) ยอมรับการเชื่อมต่อขาเข้า นอกจากนี้เพื่อให้สามารถเข้าถึงโลกภายนอก (เช่น www) คุณจะต้องส่งต่อการรับส่งข้อมูลไปยังเกตเวย์ภายในของคุณ: พอร์ตผ่านการตั้งค่าเราเตอร์ของคุณ
นี่คือวิธีการทำ:
เปิดพอร์ตบนเราเตอร์ (ผ่าน 192.168.1.1) เพื่อส่งต่อทราฟฟิกจาก your_web_ip: พอร์ตไปยัง local_gateway: พอร์ต
เสร็จสิ้น ตอนนี้จากคอมพิวเตอร์ระยะไกลเปิดเบราว์เซอร์ของคุณไปยังที่อยู่ ip ของเว็บของคุณ (ค้นหาผ่านhttp://www.whatismyip.com/ ) + พอร์ตปลายทาง # ด้านบนเช่น 72.189.194.65:3280 สิ่งนี้จะเชื่อมต่อกับ 192.168.1.4 ในพื้นที่ของคุณ : 3000
หมายเหตุ: ฉันใช้ Mac OSX 10.7.5
127.0.0.1 เป็นที่อยู่ในระบบที่คอมพิวเตอร์ทุกเครื่องมีให้ คุณต้องค้นหาว่าที่อยู่ IP จริง (หรือชื่อโฮสต์ / Bonjour) ของเครื่องคืออะไร ไปที่การตั้งค่าระบบเครือข่ายและค้นหา IP ของเครื่องไม่ว่าจะเป็นพอร์ต Ethernet หากคุณใช้สายเคเบิลหรือสนามบินหากคุณใช้ WLAN จากนั้นเปิดที่อยู่นี้พร้อมกับ: ส่วนที่ 3000 ใน Safari บน iPhone
หากแอปพลิเคชั่นรับฟัง 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
0.0.0.0
! ฉันจะไม่คิดอย่างนั้นได้อย่างไร
คุณเคยลองแล้วมันใช้งานได้สำหรับฉัน (ฉันไม่ได้มีส่วนเกี่ยวข้องกับมัน):
rails server -b 0.0.0.0
แล้วเบราว์เซอร์นี้บน iPhone ของคุณ