Tường lửa Mac chặn nginx (cổng 80) từ bên ngoài


10

Tôi đã cài đặt nginx bằng các cổng và bắt đầu với sudo. Truy cập trang chào mừng nginx từ localhost hoạt động hoàn hảo, tuy nhiên việc truy cập nó từ máy tính bên ngoài không thành công.

Thực hiện một sơ đồ trên máy tính từ bên ngoài cho thấy

80/tcp   filtered http

Vì vậy, rõ ràng tường lửa mac đang chặn cổng. Sau đó tôi tiến hành thêm nginx thực thi vào danh sách ngoại lệ tường lửa, tuy nhiên nmap vẫn hiển thị khi cổng 80 được lọc và tôi không thể truy cập trang web. Nhị phân chính xác có trong danh sách là / opt / local / sbin / nginx mà theo hiểu biết của tôi có vẻ đúng

Bất cứ ý tưởng tôi nên làm gì? Cảm ơn!

PS Tắt tường lửa cho phép tôi truy cập trang web từ thế giới bên ngoài, tuy nhiên đó không phải là một giải pháp lý tưởng.


Tôi không có câu trả lời, nhưng đây là một vài điều cần xem xét: kiểm tra /var/log/appfirewall.log để xem nó có gì hữu ích không, và chạy sudo lsof -i:80để đảm bảo rằng nó thực sự nginx đang lắng nghe (và điều đó nó lắng nghe trên tất cả các IP, không chỉ 127.0.0.1).
Gordon Davisson

Này Gordon, cảm ơn vì những lời đề nghị! Nhật ký tường lửa của tôi trông như thế này khi tôi cố gắng kết nối: 18 tháng 12 02:12:56 MacBook-Pro.local socketfilterfw [80663] <Thông tin>: Từ chối kết nối từ my.ip.is.here:55843 tới cổng 80 proto = 6 Và đây là đầu ra của bảng nghe: nginx 80437 root 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) nginx 80438 không ai 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) :(
Alex Ionescu

Có thể bạn có hai thực thi nginx, một cho phép trong tường lửa và một không? Đó là điều duy nhất tôi có thể nghĩ đến ...
Gordon Davisson

Câu trả lời:


10

Điều này làm việc cho tôi (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

Khi thử thực hiện thông qua symlink (để tránh làm lại quá trình này khi nginx được nâng cấp), đã gặp lỗi sau: Ứng dụng không phải là một phần của tường lửa sau khi chạy:

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

Tôi nhận được thông báo tương tự "Ứng dụng không phải là một phần của tường lửa" và trong trường hợp của tôi, đây là một vấn đề nhạy cảm với trường hợp ... tôi đã viết hầm thay vì Cellar. Khi tôi sử dụng Capital C, nó đã hoạt động !! Cảm ơn
Ofer Segev

3

Đã cố gắng để tìm ra điều này từ lâu, cuối cùng thực hiện như sau trong thiết bị đầu cuối:

$ 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

Và nó dường như để khắc phục vấn đề.

Tôi cũng đã kéo ứng dụng nginx vào danh sách ứng dụng được phê duyệt trên tường lửa OS X.


Các bước này làm việc cho tôi, nhưng tôi cũng phải khởi động lại nginxđể trang web thực sự bắt đầu tải.

0

Tôi đã gặp vấn đề tương tự. Tôi nghi ngờ nó phải làm với mô hình quy trình chính / công nhân của nginx gây nhầm lẫn cho việc triển khai appfirewall của Apple.

Giải pháp tôi đã tìm thấy là nói với appfirewall để cho phép quá trình nginx:

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

Tôi không nhớ nếu điều này vẫn tồn tại trên các lần khởi động lại hay không. Nếu không, hãy tạo một bảng khởi chạy trong / Library / LaunchAgents để thực hiện việc này khi khởi động, nếu bạn muốn.


1
Điều này không hoạt động trên 10.8. Nó phàn nàn rằng -t là một lựa chọn không hợp lệ. Hơn nữa, nếu tôi thêm thông qua --add `mà nginx`, nó sẽ thêm nó, nhưng nó không nhận ra nếu tôi xóa nó bằng tùy chọn --remove.
Brendan

Điều này cũng không hoạt động trên Mac OS X 10.9.3. Apple đã loại bỏ -ttùy chọn này.
Siu Ching Pong -Asuka Kenji-

0

thay đổi $ PATH của bạn

cho hệ thống tìm ra nginx/usr/local/Cellar/nginx/nginx-xx/bin/nginxđầu tiên


0

Tôi đang ở El Capitan (10.11.6). Bạn có thể loại trừ thủ công nginxkhỏi tường lửa bằng GUI. Điều này đã giải quyết nó cho tôi.

Đầu tiên, vào phần System Preferences. Sau đó, đi đến Bảo mật & Quyền riêng tư và nhấp vào tab Tường lửa.

Nhấp vào nút 'Tùy chọn tường lửa' và thêm nginxdưới dạng một ứng dụng loại trừ tại đây:

nhập mô tả hình ảnh ở đây

Nginx đã được đặt /usr/local/Cellar/nginx/1.10.3/bin/nginxcho tôi. Tôi không thể điều hướng đến phần này trong trình thám hiểm tệp trong Tùy chọn hệ thống, vì vậy để khắc phục nó, tôi đã tạo một lối tắt đến nginxtrên màn hình của mình và chọn nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.