2015-05-14 12 views
11

Pytanie w krótkimFlask - Jak sprawić, by aplikacja była widoczna zewnętrznie przez router?

Jak uruchomić prostą stronę internetową kolby opartej widoczny w Internecie, z komputera hosta, który jest dostępu do Internetu z routerem bezprzewodowym?

dane pytanie

Chciałbym, aby aplikacja kolba widoczna w internecie, jak na Quickstart Guide.

Jeśli uruchomię prostą aplikację na kolbę poniżej, będzie ona dostępna z komputera w tej samej sieci, co komputer hosta, ale nie z urządzenia podłączonego do Internetu przez inną sieć. Ten problem jest podobny do omówionego here i here, z dodanym elementem, który działa z komputera domowego sugeruje, że połączenia zewnętrzne wskazują na port xx routera, a nie na port xx hosta , jak sugerują komentarze w this post.

Co zrobiłem

Odwoływanie poniższy kod, oto co zrobiłem:

  • sprawdzone mój IP address W Panelu sterowania
  • wyłączoną wszelką ochronę sieci w antywirusowego
  • uruchom ` ipconfig/all ', będąc na komputerze z systemem Windows
  • w końcu otworzył przeglądarkę w urządzeniu connecte d do innej sieci i wskazał go do odpowiedniego IP: port adres

Rezultatem jest to, że „Strona internetowa jest niedostępna”.

Czy ktoś napotkał ten sam problem? Czy to jest problem z routerem?

referencyjny Kolba aplikacja

from flask import Flask 
app = Flask(__name__) 

@app.route('/') 
def hello_world(): 
    return 'Hello World!' 

if __name__ == '__main__': 
    app.run(host= '0.0.0.0', port=9000, debug=False) 
+2

Routery są specjalnie wykonane, aby zapobiec tego rodzaju zachowania i utrzymania zabezpieczone połączenie domu ze światem zewnętrznym. Być może uda Ci się znaleźć obejście, ale nie powinieneś. –

+2

Konieczność skonfigurowania routera, aby przekazywał żądania do portu 9000 adresu IP komputera, na którym działa aplikacja kolby. – reptilicus

+0

Dlaczego chcesz to zrobić? Poleciłbym założyć stronę na Heroku na coś tak trywialnego jak to. – IanAuld

Odpowiedz

10

Podstawowa konfiguracja będzie utworzyć regułę, która prześle wniosek do portu 80 i/lub portu 443 przeznaczone do hosta w sieci lokalnej.

Przykład: utwórz NAT (tłumaczenie adresu) i regułę przekazywania portów, aby przekazywać przychodzące żądania HTTP/S do lokalnego hosta sieciowego z uruchomioną aplikacją Pythona.

Na przykład:

app.run(host= '192.168.0.58', port=9000, debug=False) 

Reguła NAT powinny kierować 192.168.0.58 na porcie 9000.

+0

Dzięki! Następnie dowiedz się, jak skonfigurować router. – Pythonic

+0

jak pobrać adres IP komputera '192.168.0.58' python? Czy to możliwe ? –

+0

https://stackoverflow.com/questions/166506/finding-local-ip-addresses-using-pythons-stdlib Istnieje kilka podejść tutaj - zaakceptowana odpowiedź prawdopodobnie nie zadziała na Linuksie, więc spójrz na inne . –

Powiązane problemy