Mac güvenlik duvarı nginx'i (bağlantı noktası 80) dış taraftan engelliyor


10

Bağlantı noktalarını kullanarak nginx'i yükledim ve sudo ile başlattım. Nginx karşılama sayfasına localhost'tan erişmek mükemmel çalışıyor, ancak harici bir bilgisayardan erişilemiyor.

Bilgisayardan dışarıdan bir nmap yapmak

80/tcp   filtered http

Mac güvenlik duvarı bağlantı noktasını engelliyor. Daha sonra güvenlik duvarı istisna listesine nginx yürütülebilir dosyasını eklemeye devam ediyorum, ancak nmap hala 80 numaralı bağlantı noktası filtreleniyor ve web sayfasına erişemiyorum. Listedeki tam ikili / opt / local / sbin / nginx, bildiklerime göre doğru görünüyor

Herhangi bir fikrim var mı? Teşekkürler!

PS Güvenlik duvarını kapatmak web sitesine dış dünyadan erişmeme izin veriyor, ancak bu ideal bir çözüm değil.


Bir cevabım yok, ama bakmak için birkaç şey var: yararlı bir şey olup olmadığını görmek için kontrol /var/log/appfirewall.log sudo lsof -i:80ve dinleme yaparken gerçekten nginx (ve bu sadece 127.0.0.1 değil tüm IP'leri dinliyor).
Gordon Davisson

Hey Gordon, öneriler için teşekkürler! Bağlanmaya çalıştığımda güvenlik duvarı günlüğüm şöyle görünüyor: Aralık 18 02:12:56 MacBook-Pro.local socketfilterfw [80663] <Info>: my.ip.is.here:55843 adresinden 80 proto = 6 bağlantı noktasına bağlanmayı reddet Ve bu dinleme tablosunun çıktısıdır: nginx 80437 root 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) nginx 80438 kimse 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) Her şey doğru olmalı, ancak yine de engelleniyor gibi görünüyor :(
Alex Ionescu

Biri güvenlik duvarında izinli, diğeri izinli olmayan iki nginx yürütülebilir dosya olabilir mi? Aklıma gelen tek şey bu ...
Gordon Davisson

Yanıtlar:


10

Bu benim için çalıştı (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

Symlink aracılığıyla yapmaya çalıştığınızda (nginx yükseltildiğinde bu işlemi yeniden yapmaktan kaçınmak için), aşağıdaki hatayı aldı: Uygulama çalıştırdıktan sonra güvenlik duvarının bir parçası değil :

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

"Uygulama güvenlik duvarının bir parçası değil" mesajını aldım ve cas'umda büyük / küçük harfe duyarlı bir konu vardı ... Kiler yerine mahzeni yazdım. Sermaye C kullandığımda, işe yaradı! Teşekkürler
Ofer Segev

3

Yaşları boyunca bunu anlamaya çalışıyorum, sonunda terminalde aşağıdakileri yapın:

$ 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

Ve sorunu çözüyor gibiydi.

Ayrıca nginx uygulamasını OS X güvenlik duvarındaki onaylı uygulamalar listesine sürükledim.


Bu adımlar benim için çalıştı, ancak nginxweb sitesinin aslında yüklemeye başlaması için yeniden başlatmam gerekiyordu .
Hippo

0

Ben de aynı problemle karşılaştım. Apple'ın appfirewall uygulamasını karıştıran nginx'in master / worker süreç modeliyle ilgili olduğundan şüpheleniyorum.

Bulduğum çözüm, appfirewall'a nginx işlemine izin vermesini söylemektir:

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

Bunun yeniden başlatmalarda devam edip etmediğini hatırlamıyorum. Yoksa, önyüklemede bunu yapmak için / Library / LaunchAgents içinde bir başlatma plist'i oluşturun.


1
Bu 10.8 üzerinde çalışmaz. -T'nin geçersiz bir seçenek olduğundan şikayet ediyor. Ayrıca, --add `hangi nginx` ile eklersem, ekler, ancak --remove seçeneğiyle kaldırmaya gidersem tanımaz.
Brendan

Bu, Mac OS X 10.9.3'te de çalışmaz. Apple -tseçeneği kaldırdı .
Siu Ching Pong -Asuka Kenji-

0

$ PATH değerinizi değiştirin

Sistem bulsun nginx içinde /usr/local/Cellar/nginx/nginx-xx/bin/nginxöncelikle


0

El Capitan'dayım (10.11.6). nginxGUI'yi kullanarak güvenlik duvarından manuel olarak hariç tutabilirsiniz . Bu benim için çözdü.

İlk olarak, Sistem Tercihleri'ne gidin. Ardından Güvenlik ve Gizlilik'e gidin ve Güvenlik Duvarı sekmesini tıklayın.

'Güvenlik Duvarı Seçenekleri' düğmesini tıklayın ve nginxhariç tutulan bir uygulama olarak buraya ekleyin :

resim açıklamasını buraya girin

Nginx /usr/local/Cellar/nginx/1.10.3/bin/nginxbenim için bulundu. Sistem Tercihleri'ndeki dosya gezginde buna gidemedim, bu yüzden nginxmasaüstümde bir kısayol yaptım ve bunu seçtim .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.