Firewall Mac memblokir nginx (port 80) dari sisi eksternal


10

Saya menginstal nginx menggunakan port dan memulainya dengan sudo. Mengakses halaman selamat datang nginx dari localhost berfungsi dengan baik, namun mengaksesnya dari komputer eksternal gagal.

Melakukan nmap di komputer dari luar akan terbuka

80/tcp   filtered http

Jadi jelas firewall mac memblokir port. Saya kemudian melanjutkan untuk menambahkan nginx yang dapat dieksekusi ke daftar pengecualian firewall, namun nmap masih muncul sebagai port 80 yang sedang difilter dan saya tidak dapat mengakses halaman web. Biner persis yang ada di daftar adalah / opt / local / sbin / nginx yang menurut pengetahuan saya tampaknya benar

Ada ide apa yang harus saya lakukan? Terima kasih!

PS Mematikan firewall tidak memungkinkan saya untuk mengakses situs web dari dunia luar, namun itu bukan solusi yang ideal.


Saya tidak punya jawaban, tetapi di sini ada beberapa hal untuk dilihat: periksa / var / log / appfirewall.log untuk melihat apakah ada yang berguna, dan jalankan sudo lsof -i:80untuk memastikan itu benar-benar nginx melakukan mendengarkan (dan itu itu mendengarkan pada semua IP, bukan hanya 127.0.0.1).
Gordon Davisson

Hei Gordon, terima kasih atas sarannya! Log firewall saya terlihat seperti ini ketika saya mencoba menghubungkan: 18 Des 02:12:56 MacBook-Pro.local socketfilterfw [80663] <Info>: Tolak koneksi dari my.ip.is.here 5-105843 ke port 80 proto = 6 dan ini adalah output dari tabel mendengarkan: nginx 80.437 akar 6u IPv4 0x35ec104ccb86c175 0T0 TCP *: http (DENGARKAN) nginx 80.438 tidak ada 6U IPv4 0x35ec104ccb86c175 0T0 TCP *: http (DENGARKAN) Sepertinya semuanya harus benar, tapi masih mendapatkan diblokir :(
Alex Ionescu

Apakah mungkin Anda memiliki dua executable nginx, satu diizinkan di firewall dan satu tidak? Itulah satu-satunya hal yang dapat saya pikirkan ...
Gordon Davisson

Jawaban:


10

Ini bekerja untuk saya (OSX 10.9):

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/local/Cellar/nginx/1.4.4/bin/nginx
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/Cellar/nginx/1.4.4/bin/nginx

Ketika mencoba melakukannya melalui symlink (untuk menghindari mengulangi proses ini ketika nginx ditingkatkan), dapatkan kesalahan berikut: Aplikasi ini bukan bagian dari firewall setelah dijalankan:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/bin/nginx

Saya mendapat pesan yang sama "Aplikasi ini bukan bagian dari firewall", dan di cas saya itu adalah masalah case sensitif ... saya menulis ruang bawah tanah bukannya Cellar. ketika saya menggunakan Capital C, itu berhasil !! Terima kasih
Ofer Segev

3

Sudah mencoba mencari tahu ini sejak lama, akhirnya melakukan hal berikut di terminal:

$ sudo /usr/libexec/ApplicationFirewall/socketfilterfw --remove /usr/local/Cellar/nginx/1.10.0/bin/nginx
Application at path ( /usr/local/Cellar/nginx/1.10.0/bin/nginx ) removed from firewall

$ sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/local/Cellar/nginx/1.10.0/bin/nginx
The application is already a part of the firewall

$ sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/Cellar/nginx/1.10.0/bin/nginx
Incoming connection to the application is permitted

Dan itu sepertinya memperbaiki masalah.

Saya juga menyeret aplikasi nginx ke daftar aplikasi yang disetujui pada OS X firewall.


Langkah-langkah ini berhasil bagi saya, tetapi saya juga harus memulai kembali nginxagar situs web benar-benar mulai memuat.
Hippo

0

Saya mengalami masalah yang sama. Saya menduga itu ada hubungannya dengan model proses master / pekerja nginx membingungkan implementasi appfirewall Apple.

Solusi yang saya temukan adalah memberi tahu appfirewall untuk mengizinkan proses nginx:

$ sudo /usr/libexec/ApplicationFirewall/socketfilterfw -t nginx

Saya tidak ingat apakah ini berlanjut di seluruh reboot atau tidak. Jika tidak, buat daftar peluncuran di / Library / LaunchAgents untuk melakukan ini saat boot, jika Anda mau.


1
Ini tidak berfungsi pada 10.8. Mengeluh bahwa -t adalah opsi yang tidak valid. Lebih jauh, jika saya menambahkan melalui --add `which nginx`, ia menambahkannya, tetapi ia tidak mengenalinya jika saya menghapusnya dengan opsi --remove.
Brendan

Ini juga tidak berfungsi pada Mac OS X 10.9.3. Apple telah menghapus -topsi.
Siu Ching Pong -Asuka Kenji-

0

ubah $ PATH Anda

biarkan sistem menemukan nginx di /usr/local/Cellar/nginx/nginx-xx/bin/nginxpertama


0

Saya sedang di El Capitan (10.11.6). Anda dapat secara manual mengecualikan nginxdari firewall menggunakan GUI. Ini menyelesaikannya untuk saya.

Pertama, buka System Preferences. Lalu pergi ke Keamanan & Privasi, dan klik tab Firewall.

Klik tombol 'Opsi Firewall' dan tambahkan nginxsebagai aplikasi yang dikecualikan di sini:

masukkan deskripsi gambar di sini

Nginx cocok /usr/local/Cellar/nginx/1.10.3/bin/nginxuntuk saya. Saya tidak bisa menavigasi ke ini di file explorer di System Preferences, jadi untuk menyiasatinya saya membuat jalan pintas ke nginxdesktop saya dan memilih itu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.