Saya mengalami masalah kecil di akhir panduan Memulai untukvagrant
. Saya sedang mengerjakan basebox CentOS yang menjalankan Apache2 (penyediaan melalui Puppet). Saya telah menyiapkan penerusan port untuk permintaan web menggunakan baris berikut di Vagrantfile
:
config.vm.forward_port "web", 80, 4567
Tetapi ketika saya membuat permintaan ke port itu, mereka gagal. Kesalahan yang dilaporkan oleh Safari adalah 'Safari tidak dapat membuka halaman " http: // localhost: 4567 / " karena server tiba-tiba memutuskan koneksi.'
Saya melakukan vagrant reload
dan melihat "[default] - web: 80 => 4567 (adaptor 1)" di gulungan, jadi di mana saya harus mulai memecahkan masalah ini? Terima kasih.
curl -v 'http://localhost:4567/'
dikatakannya? Terkadang Safari agak terlalu bagus dalam menyembunyikan pesan kesalahan.curl 'http://localhost:80'
dari VM itu sendiri berfungsi? Jika tidak, masalahnya bukan pada penerusan port.curl
dari dalam VM berfungsi.curl
dari tuan rumah memberi saya(52) Empty reply from server
.Jawaban:
Saya akan membuat ini jawaban yang sebenarnya, bukan hanya lebih banyak komentar.
Hal pertama: coba
curl 'http://localhost:80'
dari dalam VM. Jika itu tidak berhasil, maka itu jelas bukan port forwarding.Berikutnya: coba
curl -v 'http://localhost:4567/'
dari mesin host Anda. Curl mungkin memberi Anda pesan kesalahan yang lebih baik daripada Safari.Saya akan memeriksa bahwa tidak ada pengaturan firewall yang membatasi akses ke port 80. Vagrant VM (Ubuntu) default tidak dilengkapi dengan pengaturan firewall, tetapi Anda mengatakan Anda menggunakan sesuatu yang lain, jadi mungkin sepadan untuk memeriksa.
Jika bukan itu, coba buat sesuatu selain Apache yang terdaftar pada port 80. Python dikirimkan dengan server HTTP sederhana yang dapat Anda gunakan - buka folder dengan
index.html
dan jalankansudo python -m SimpleHTTPServer 80
, lalu coba tekan dengan curl dari kedua kotak. Jika berhasil, mungkin itu masalah konfigurasi Apache. Saya tidak memiliki cukup pengalaman dengan Apache untuk membantu jika itu masalahnya (saya menggunakan nginx).sumber
iptables
. Saya memeriksa untuk memastikan kebijakan default adalahACCEPT
untuk koneksi masuk, tetapi tidak memperhatikan rantai aturan kustom RedHat, yang memilikiREJECT
aturan penampung-semua sebagai aturan terakhir dalam rantai. tl; dr Saya memiliki firewall di jalan dan tidak menyadarinya.service iptables stop
sebagai root untuk dengan cepat menyingkirkan masalah firewall Tamu. Aktifkan kembali nanti jika perlu.iptables
membatasi hampir segalanya. Saya mengikuti panduan centos iptable ini (solusi di bagian 3 Menulis Set Aturan Sederhana ) dan itu bekerja seperti pesona :)Vagrantfile
dan menjalankan perintahvagrant reload
Saya ingin menambahkan catatan tambahan bahwa seringkali hal ini disebabkan oleh server di dalam VM karena terikat
127.0.0.1
, yaitu loopback. Anda akan ingin memastikan bahwa server terikat0.0.0.0
sehingga semua antarmuka dapat mengaksesnya.Beberapa server aplikasi built-in seperti server pengembangan Django dan beberapa server Ruby default
127.0.0.1
secara default jadi ini adalah sesuatu yang harus diperhatikan.Selain itu, apa yang dikatakan Steve benar: Pastikan itu berfungsi dari dalam VM dan coba beberapa server sederhana lainnya untuk mencoba dan mencari tahu apakah itu masalah konfigurasi.
sumber
Saya memiliki masalah yang sama di CentOS 6.3 w / NGINX dan menemukan jawabannya ada di iptables di kotak gelandangan.
Dari pesta di kotak gelandangan, ikuti langkah-langkah berikut:
Daftar pertama aturan iptable saat ini
Kemudian hapus aturan saat ini:
Izinkan koneksi SSH pada tcp port 22
Tetapkan kebijakan default untuk rantai INPUT, FORWARD dan OUTPUT
Setel akses untuk localhost
Terima paket milik koneksi mapan dan terkait
Simpan Pengaturan
Buat daftar aturan yang diubah
Curl localhost: [port #] atau tekan di browser Anda dari luar gelandangan
Info lebih lanjut tentang konfigurasi iptable CentOS ditemukan di sini:
http://wiki.centos.org/HowTos/Network/IPTables
Semoga berhasil.
sumber
service iptables stop
iptables -F
sendiri melakukannya untuk sayaSolusi yang lebih baik bagi saya adalah menonaktifkan firewall
sumber
Saya ingin menambahkan catatan lain seperti Mitchell juga. jika kasus saya, saya meneruskannya ke 6789 dari 80
Dan saya mengerti
Kemudian, saya menggunakan alamat IP sebagai gantinya, itu mendapat pesan html yang benar.
sumber