외부에서 nginx (포트 80)를 차단하는 Mac 방화벽


10

포트를 사용하여 nginx를 설치하고 sudo로 시작했습니다. localhost에서 nginx 시작 페이지에 액세스하면 완벽하게 작동하지만 외부 컴퓨터에서 액세스 할 수 없습니다.

외부에서 컴퓨터의 nmap을 수행하면

80/tcp   filtered http

따라서 Mac 방화벽이 포트를 차단하고 있습니다. 그런 다음 nginx 실행 파일을 방화벽 예외 목록에 추가하지만 nmap은 여전히 ​​포트 80이 필터링되는 것으로 표시되어 웹 페이지에 액세스 할 수 없습니다. 목록에있는 정확한 바이너리는 / opt / local / sbin / nginx입니다.

내가해야 할 아이디어가 있습니까? 감사!

PS 방화벽을 끄면 외부에서 웹 사이트에 액세스 할 수 있지만 이상적인 솔루션은 아닙니다.


나는 대답을하지 않지만, 여기에 몇 가지를보고 있습니다 : 그것은 아무것도 유용이 있는지 확인 /var/log/appfirewall.log, 실행 sudo lsof -i:80해야합니다 정말 nginx를 청취를하고있어 수 있도록 (그 127.0.0.1이 아닌 모든 IP에서 수신 대기 중입니다).
Gordon Davisson

고든, 제안 해 주셔서 감사합니다! 연결하려고하면 방화벽 로그가 다음과 같이 나타납니다. 12 월 18 일 02:12:56 MacBook-Pro.local socketfilterfw [80663] <Info> : my.ip.is.here:55843에서 포트 80 proto = 6으로의 연결 거부 그리고 이것은 청취 테이블의 출력입니다. :(
Alex Ionescu 8

두 개의 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

nginx를 업그레이드 할 때이 프로세스를 다시 실행하지 않기 위해 symlink를 통해 시도했을 때 다음 오류가 발생했습니다. 실행 후 응용 프로그램이 방화벽의 일부가 아닙니다 .

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

"응용 프로그램이 방화벽의 일부가 아닙니다"라는 동일한 메시지가 표시되며 CAS에서 대 / 소문자를 구분하는 문제가 발생했습니다 ... Cellar 대신 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웹 사이트를 실제로로드하기 위해 다시 시작 해야했습니다.
Hippo

0

나는이 같은 문제에 부딪쳤다. 애플의 appfirewall 구현을 혼란스럽게하는 nginx의 마스터 / 작업자 프로세스 모델과 관련이 있다고 생각합니다.

내가 찾은 해결책은 appfirewall에 nginx 프로세스를 허용하도록 지시하는 것입니다.

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

재부팅 후에도 이것이 지속되는지는 기억 나지 않습니다. 그렇지 않은 경우 원하는 경우 / Library / LaunchAgents에 시작 plist를 만들어 부팅시이를 수행하십시오.


1
10.8에서는 작동하지 않습니다. -t가 유효하지 않은 옵션이라고 불평합니다. 또한 --add`which nginx`를 통해 추가하면 추가되지만 --remove 옵션으로 제거하면 인식하지 못합니다.
Brendan

Mac OS X 10.9.3에서도 작동하지 않습니다. 애플은 -t옵션 을 제거했다 .
Siu Ching Pong -Asuka Kenji-

0

$ PATH 변경

시스템 이 먼저 nginx 를 찾도록하십시오/usr/local/Cellar/nginx/nginx-xx/bin/nginx


0

저는 엘 캐피 탄 (10.11.6)에 있습니다. nginxGUI를 사용하여 방화벽에서 수동으로 제외 할 수 있습니다 . 이것은 나를 위해 해결했습니다.

먼저 시스템 환경 설정으로 이동하십시오. 그런 다음 보안 및 개인 정보로 이동하여 방화벽 탭을 클릭하십시오.

'방화벽 옵션'버튼을 클릭하고 nginx여기에서 제외 된 응용 프로그램으로 추가 하십시오.

여기에 이미지 설명을 입력하십시오

Nginx가 /usr/local/Cellar/nginx/1.10.3/bin/nginx나를 위해있었습니다. 시스템 환경 설정의 파일 탐색기 에서이 항목을 탐색 할 수 없으므로 문제를 해결하기 위해 nginx바탕 화면에 바로 가기를 만들어 선택했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.