Na końcu przewodnika Wprowadzenie dla programuvagrant
. Pracuję na stacji bazowej CentOS, na której działa Apache2 (udostępnianie przez Puppet). Skonfigurowałem przekierowanie portów dla żądań internetowych, używając następującego wiersza Vagrantfile
:
config.vm.forward_port "web", 80, 4567
Ale kiedy wysyłam żądania do tego portu, zawodzą. Błąd zgłoszony przez Safari to „Safari nie może otworzyć strony„ http: // localhost: 4567 / ”, ponieważ serwer nieoczekiwanie porzucił połączenie”.
Zrobiłem a vagrant reload
i zobaczyłem w zwoju "[default] - web: 80 => 4567 (adapter 1)", więc gdzie mam zacząć rozwiązywać ten problem? Dzięki.
curl -v 'http://localhost:4567/'
mówi? Czasami Safari trochę zbyt dobrze ukrywa komunikaty o błędach.curl 'http://localhost:80'
z samej maszyny wirtualnej działa? Jeśli nie, problem nie dotyczy przekierowania portów.curl
z maszyny wirtualnej działa.curl
od gospodarza mi daje(52) Empty reply from server
.Odpowiedzi:
Uczynię to rzeczywistą odpowiedzią zamiast tylko więcej komentarzy.
Pierwsza rzecz: spróbuj
curl 'http://localhost:80'
z poziomu maszyny wirtualnej. Jeśli to nie zadziała, to na pewno nie jest to przekierowanie portów.Dalej: spróbuj
curl -v 'http://localhost:4567/'
z komputera głównego. Curl może dać lepszy komunikat o błędzie niż Safari.Sprawdziłbym, czy nie ma skonfigurowanych zapór ogniowych ograniczających dostęp do portu 80. Domyślna maszyna wirtualna Vagrant (Ubuntu) nie ma skonfigurowanej zapory, ale powiedziałeś, że używasz czegoś innego, więc może być tego warte sprawdzić.
Jeśli to nie wszystko, spróbuj stworzyć coś innego niż Apache na porcie 80. Python jest dostarczany z prostym serwerem HTTP, którego możesz użyć - przejdź do folderu
index.html
i uruchomsudo python -m SimpleHTTPServer 80
, a następnie spróbuj uderzyć w to curl z obu pól. Jeśli to zadziała, prawdopodobnie jest to problem z konfiguracją Apache. Nie mam wystarczającego doświadczenia z Apache, aby pomóc, jeśli tak jest (używam nginx).źródło
iptables
. Sprawdziłem, czy domyślna politykaACCEPT
dotyczy połączeń przychodzących, ale nie zwróciłem uwagi na niestandardowy łańcuch reguł RedHat, który maREJECT
regułę catch-all jako ostatnią regułę w łańcuchu. tl; dr Miałem firewall na drodze i po prostu tego nie zauważyłem.service iptables stop
jako root, aby szybko wykluczyć problem z zaporą sieciową gościa. W razie potrzeby włącz go ponownie później.iptables
ograniczał prawie wszystko. Postępowałem zgodnie z tym praktycznym przewodnikiem po centos (rozwiązanie w sekcji 3 Pisanie prostego zestawu reguł ) i zadziałało jak urok :)Vagrantfile
i uruchomiłem polecenievagrant reload
Chciałem dodać dodatkową uwagę, że często jest to spowodowane przez serwer w maszynie wirtualnej, ponieważ jest on powiązany z
127.0.0.1
, czyli sprzężeniem zwrotnym. Będziesz chciał się upewnić, że serwer jest powiązany, aby0.0.0.0
wszystkie interfejsy miały do niego dostęp.Niektóre wbudowane serwery aplikacji, takie jak serwery deweloperskie Django i niektóre serwery Ruby, są domyślnie
127.0.0.1
ustawione, więc jest to coś, na co należy uważać.Poza tym, to, co powiedział Steve, jest prawdą: upewnij się, że działa z poziomu maszyny wirtualnej i wypróbuj inne proste serwery, aby spróbować dowiedzieć się, czy jest to problem z konfiguracją.
źródło
Miałem ten sam problem na CentOS 6.3 z NGINX i znalazłem odpowiedź w iptables na pudełku włóczęgi.
Od uderzenia w pudełko włóczęgów wykonaj następujące kroki:
Najpierw wypisz aktualne zasady iptable
Następnie usuń aktualne zasady:
Zezwalaj na połączenia SSH na porcie TCP 22
Ustaw domyślne zasady dla łańcuchów INPUT, FORWARD i OUTPUT
Ustaw dostęp dla hosta lokalnego
Akceptuj pakiety należące do ustanowionych i powiązanych połączeń
Zapisz ustawienia
Lista zmodyfikowanych reguł
Curl localhost: [port #] lub naciśnij go w przeglądarce z zewnątrz włóczęga
Więcej informacji na temat konfiguracji CentOS iptable można znaleźć tutaj:
http://wiki.centos.org/HowTos/Network/IPTables
Powodzenia.
źródło
service iptables stop
iptables -F
sam to dla mnieLepszym rozwiązaniem dla mnie jest wyłączenie firewalla
źródło
Chcę również dodać kolejną notatkę, taką jak Mitchell. jeśli w mojej sprawie przekażę to na 6789 z 80
I dostałem
Następnie zamiast tego użyłem adresu IP, otrzymałem poprawną wiadomość html.
źródło