ไฟร์วอลล์ Mac ปิดกั้น nginx (พอร์ต 80) จากด้านนอก


10

ฉันติดตั้ง nginx โดยใช้พอร์ตและเริ่มด้วย sudo การเข้าถึงหน้ายินดีต้อนรับ nginx จาก localhost นั้นทำงานได้อย่างสมบูรณ์อย่างไรก็ตามการเข้าถึงหน้าเว็บจากคอมพิวเตอร์ภายนอกล้มเหลว

การทำ nmap บนคอมพิวเตอร์จากด้านนอกเผยให้เห็น

80/tcp   filtered http

ดังนั้นไฟร์วอลล์ของ Mac จึงปิดกั้นพอร์ตอย่างชัดเจน จากนั้นฉันจะเพิ่มไฟล์เรียกทำงาน nginx ลงในรายการข้อยกเว้นของไฟร์วอลล์อย่างไรก็ตาม nmap ยังคงปรากฏขึ้นเมื่อพอร์ต 80 ถูกกรองและฉันไม่สามารถเข้าถึงหน้าเว็บได้ ไบนารีที่แน่นอนที่อยู่ในรายการคือ / opt / local / sbin / nginx ซึ่งความรู้ของฉันดูเหมือนถูกต้อง

ความคิดใดที่ฉันควรทำ ขอบคุณ!

PS การปิดไฟร์วอลล์ทำให้ฉันสามารถเข้าถึงเว็บไซต์จากโลกภายนอกได้ แต่นั่นไม่ใช่วิธีแก้ปัญหาที่สมบูรณ์แบบ


ฉันไม่มีคำตอบ แต่ต่อไปนี้เป็นสองสามสิ่งที่ต้องดู: ตรวจสอบ /var/log/appfirewall.log เพื่อดูว่ามันมีประโยชน์หรือไม่และเรียกใช้sudo lsof -i:80เพื่อให้แน่ใจว่าเป็นสิ่งที่ต้องทำ มันกำลังฟังบน IP ทั้งหมดไม่ใช่แค่ 127.0.0.1)
Gordon Davisson

เฮ้กอร์ดอนขอบคุณสำหรับคำแนะนำ! ไฟล์บันทึกไฟร์วอลล์ของฉันมีลักษณะเช่นนี้เมื่อฉันพยายามเชื่อมต่อ: Dec 18 02:12:56 MacBook-Pro.local socketfilterfw [80663] <Info>: ปฏิเสธการเชื่อมต่อจาก my.ip.is.here:55843 ไปยังพอร์ต 80 proto = 6 และนี่คือผลลัพธ์ของตารางการฟัง: nginx 80437 root 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) nginx 80438 ไม่มีใคร 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) ดูเหมือนว่าทุกอย่างจะถูกต้อง แต่ยังคงถูกบล็อก :(
Alex Ionescu

เป็นไปได้หรือไม่ที่คุณมีสองโปรแกรมเรียกใช้ nginx หนึ่งตัวอนุญาตในไฟร์วอลล์และอีกอันไม่ได้? นั่นเป็นสิ่งเดียวที่ฉันนึกได้ ...
Gordon Davisson

คำตอบ:


10

สิ่งนี้ใช้ได้สำหรับฉัน (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 (เพื่อหลีกเลี่ยงการทำซ้ำกระบวนการนี้เมื่ออัพเกรด nginx) ได้รับข้อผิดพลาดต่อไปนี้: แอปพลิเคชันไม่ได้เป็นส่วนหนึ่งของไฟร์วอลล์ หลังจากใช้งาน:

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

ฉันได้รับข้อความเดียวกัน "แอปพลิเคชันไม่ได้เป็นส่วนหนึ่งของไฟร์วอลล์" และในกรณีของฉันมันเป็นปัญหาที่มีความอ่อนไหวในกรณี ... ฉันเขียนห้องใต้ดินแทน Cellar เมื่อฉันใช้ Capital C มันใช้งานได้ !! ขอบคุณ
Ofer Segev

3

เคยพยายามคิดเรื่องนี้มานานแล้วในที่สุดก็ทำสิ่งต่อไปนี้ในเครื่องเทอร์มินัล:

$ 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

และดูเหมือนว่าจะแก้ไขปัญหา

ฉันยังลากแอปพลิเคชั่น nginx ไปยังรายการแอปพลิเคชันที่ได้รับอนุมัติบนไฟร์วอลล์ OS X


ขั้นตอนเหล่านี้ใช้งานได้สำหรับฉัน แต่ฉันต้องรีสตาร์ทnginxเพื่อให้เว็บไซต์เริ่มโหลดจริง
ฮิปโป

0

ฉันพบปัญหาเดียวกันนี้แล้ว ฉันสงสัยว่ามันเกี่ยวข้องกับกระบวนการต้นแบบ / ผู้ปฏิบัติงานของ nginx ซึ่งทำให้เกิดความสับสนในการติดตั้ง appfirewall ของ Apple

วิธีแก้ปัญหาที่ฉันพบคือบอก appfirewall เพื่อให้กระบวนการ nginx:

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

ฉันจำไม่ได้ว่าสิ่งนี้ยังคงมีอยู่ในการบูตเครื่องใหม่หรือไม่ หากไม่เป็นเช่นนั้นให้สร้าง Plist Launch ใน / Library / LaunchAgents เพื่อทำสิ่งนี้ในการบู๊ตหากคุณต้องการ


1
สิ่งนี้ใช้ไม่ได้กับ 10.8 มันบ่นว่า -t เป็นตัวเลือกที่ไม่ถูกต้อง นอกจากนี้หากฉันเพิ่มผ่าน - เพิ่ม `ซึ่ง nginx` มันเพิ่ม แต่ไม่รู้จักถ้าฉันไปลบด้วยตัวเลือก - ลบ
เบรนแดน

สิ่งนี้ใช้ไม่ได้กับ Mac OS X 10.9.3 เช่นกัน Apple ได้ลบ-tตัวเลือก
งุดชิงโปง - อาซึกะเคน

0

เปลี่ยนเส้นทางของคุณ

ให้ระบบค้นหาnginxใน/usr/local/Cellar/nginx/nginx-xx/bin/nginxตอนแรก


0

ฉันอยู่ที่ El Capitan (10.11.6) คุณสามารถแยกnginxออกจากไฟร์วอลล์ด้วยตนเองโดยใช้ GUI วิธีนี้แก้ไขได้สำหรับฉัน

ก่อนอื่นให้ไปที่การตั้งค่าระบบ จากนั้นไปที่ความปลอดภัยและความเป็นส่วนตัวแล้วคลิกแท็บไฟร์วอลล์

คลิกปุ่ม 'ตัวเลือกไฟร์วอลล์' และเพิ่มnginxเป็นแอปพลิเคชันที่ยกเว้นที่นี่:

ป้อนคำอธิบายรูปภาพที่นี่

Nginx ตั้งอยู่ใน/usr/local/Cellar/nginx/1.10.3/bin/nginxฉัน ฉันไม่สามารถนำทางไปยังสิ่งนี้ได้ในตัวสำรวจไฟล์ในการตั้งค่าระบบดังนั้นเมื่อต้องการรับรอบฉันได้ทำทางลัดไปยังnginxเดสก์ท็อปของฉันและเลือกมัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.