Jak uzyskać dostęp do lokalnego serwera WWW na moim laptopie z innego komputera? [Zamknięte]

37

Mam aplikację uruchomioną na moim komputerze w wersji 127.0.0.1:3000

Chciałbym uzyskać dostęp do tej aplikacji z iPhone'a podłączonego do tej samej sieci. Zrobiłem to już wcześniej, ale nie rozumiem, jak to zrobiłem. Jakieś pomysły?

Tony
źródło
2
spróbuj rails server -b 0.0.0.0, a następnie przeglądaj to na swoim iPhonie.
zx1986

Odpowiedzi:

37

Najpierw musisz określić adres IP lub nazwę komputera, na którym działa serwer WWW. Zakładam, że używasz serwera WWW na komputerze Mac, ponieważ macosxdokładnie otagowałeś swój post, instrukcje są podobne dla maszyn z systemem Linux. Na komputerze Mac:

  • Otwarte Terminal.app. Jest poniżej Applications->Utilities.
  • Uruchom ifconfigw terminalu. To pokazuje wszystkie interfejsy sieciowe na komputerze. Jedną z nich jest sieć, do której urządzenie jest aktywnie podłączone. Jeśli Mac jest podłączony przewodowo, powinno być en0. Zanotuj adres później inet- powinien to być adres, którego używa twoje urządzenie.
    • Załóżmy, że odkryłeś, że to 192.168.10.1.
  • Sprawdź, czy możesz połączyć się z tym adresem z serwera za pomocą nc -v 192.168.10.1 3000.
    • Powinieneś zobaczyć wiadomość podobną do Connection to 192.168.10.1 3000 port [tcp/http] succeeded!.
    • Jeśli to nie zadziała, patrz poniżej.
    • Jeśli to działa, naciśnij, ctrl-Caby wyjść z sesji nc.
  • Teraz spróbuj połączyć się na komputerze klienckim.
    • Jeśli jest to aplikacja internetowa, połączenie powinno być możliwe za pośrednictwem przeglądarki
    • Na przykład spróbuj http://192.168.10.1:3000

Jeśli nie możesz połączyć się z aplikacją na prawdziwym adresie serwera, oznacza to, że aplikacja nie nasłuchuje pod tym adresem. Musisz zbadać, jak zmienić konfigurację aplikacji, aby zmodyfikować to zachowanie. Ponieważ nie wiem, jaką aplikację uruchamiasz, nie mogę zaoferować żadnych dobrych pomysłów na ten temat.

Phil Hollenback
źródło
10x kolego ... jaka jest różnica, gdy mówimy o systemie opartym na systemie Windows z serwerem Wamp na nim ... czy jest jakaś różnica?
Sagive SEO
Używam mac sierra. Jestem w stanie uzyskać dostęp do serwera z mojego komputera Mac (na którym działa serwer) za pośrednictwem 10.55.18.22:3000, ale nie mogę uzyskać dostępu do niego z innego komputera, nawet jeśli oba są w tej samej sieci. Opcja udostępniania sieci nie jest dostępna w sierra. Jak możemy sprawić, żeby to działało?
santhosh kumar
saanthosh: Sprawdź przekierowanie portów na routerze. To właśnie robiłem, zanim odkryłem funkcję udostępniania Internetu przez OSX (która najwyraźniej jest dostępna od co najmniej OSX 10.6). Przeprowadziłem testy hosta lokalnego na różnych urządzeniach mobilnych w tym samym pokoju / sieci, co moja maszyna deweloperska OSX, co było możliwe dzięki standardowym / małym zmianom konfiguracji routera (tj. Przekierowaniu portów). Inne artykuły i wątki SO zawierają informacje o konfiguracji routera. Ostatecznie jestem teraz w nowej lokalizacji i nie mam dostępu do routera, więc zamiast tego używam udostępniania Internetu przez OSX (High Sierra), aby osiągnąć to samo.
MarsAndBack
12

Znajdź nazwę komputera Mac za pomocą hostname(w wierszu polecenia Terminal) i użyj jej w adresie URL. Np. Http: //Tonys-iMac.local: 3000 /

Jeśli z jakiegoś powodu Bonjour nie działa w twoim środowisku, znajdź adres lotniska na komputerze iMac lub MacBook za pomocą

ipconfig getifaddr en1

lub ogólnie z

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

James
źródło
Ta odpowiedź ma kilka dobrych optymalizacji w stosunku do mojej, jeśli chodzi o znalezienie nazwy hosta i adresu IP.
Phil Hollenback,
2
dlaczego bonjour nie działa? Uważam, że moja nazwa hosta to gm20152.local. Ale kiedy próbuję gm20152.local: 3000 na tym samym komputerze, pojawia się poprawna strona. Ale kiedy próbuję gm20152.local: 3000 na moim telefonie z Androidem , przeglądarka na moim telefonie nie może znaleźć hosta. Myślę, że dzieje się tak, ponieważ mój telefon nie ma możliwości mapowania gm20152.local na adres IP mojego Macbooka. Jak mogę to osiągnąć?
gprasant
@gprasant Wprowadzenie systemu Bonjour na Androida wydaje się dość trudne
James
5

Zasadniczo w ustawieniach zapory można zezwolić określonej aplikacji (np. Ruby) na przyjmowanie połączeń przychodzących. Dodatkowo, aby umożliwić dostęp do świata zewnętrznego (np. Www), musisz przekierować ruch do wewnętrznej bramy: portu za pomocą ustawień routera.

Oto jak to zrobić:

  1. Mac-> Sys Preferencje-> Udostępnianie-> Zaznacz pole wyboru „Udostępnianie w sieci”
  2. Mac-> Sys Preferencje-> Bezpieczeństwo-> zezwól aplikacji (np. Ruby) na akceptowanie połączenia przychodzącego
  3. Otwórz port na routerze (przez 192.168.1.1), aby przekierować ruch z twoj_web_ip: port do local_gateway: port

    1. Np. Z ustawień routera mojego Verizon -> Przekazywanie portów -> utwórz regułę: przekaż do lokalnej bramy (np. 192.168.1.4), niestandardowy port, protokół tcp, source = dowolny, miejsce docelowe = 3280, wszystkie typy połączeń, przekieruj do portu = 3000.

Gotowy. Teraz z komputera zdalnego otwórz przeglądarkę na swój adres IP (znajdź poprzez http://www.whatismyip.com/ ) + port docelowy # powyżej, np. 72.189.194.65:3280, to połączy się z twoim lokalnym 192.168.1.4 : 3000

Uwaga: korzystam z systemu Mac OSX 10.7.5

Chase T.
źródło
2

127.0.0.1 to adres lokalny, który każdy komputer ma dla siebie. Musisz dowiedzieć się, jaki jest prawdziwy adres IP (lub nazwa hosta / Bonjour) urządzenia. Przejdź do Preferencji systemowych, Sieci i wyszukaj adres IP urządzenia, albo port Ethernet, jeśli korzystasz z kabla, albo lotnisko, jeśli korzystasz z sieci WLAN. Następnie otwórz ten adres wraz z częścią: 3000 w Safari na iPhonie.

Sven
źródło
Również okienko preferencji udostępniania zawsze pokazuje nazwę lub adres, pod którym można uzyskać dostęp do komputera.
James
2

Jeśli aplikacja nasłuchuje tylko w wersji 127.0.0.1:3000, nie można uzyskać do niej dostępu z innego komputera. W tym celu należy zmodyfikować konfigurację, aby nasłuchiwała adresu IP lub 0.0.0.0 (wszystkie dostępne interfejsy). To jest pierwsza opcja.

Drugą opcją jest użycie serwera proxy.

Trzecią opcją jest to, że jeśli możesz ssh z iPhone'a, możesz także użyć przekazywania ssh.

ssh użytkownik @ host -L 3000: 127.0.0.1: 3000

Następnie na telefonie iPhone otwórz 127.0.0.1:3000

Sameer
źródło
1
AFAIK, nie można przekierowywać portów ssh na iPhonie. Nie, jeśli i tak nie jest to jailbreak.
Sven
Słuchaj 0.0.0.0! Jak mogłem o tym nie myśleć?
Gustavo Straube,