인디노트

NginX 실행시 SELinux 에러에 대한 대처 본문

개발 플랫폼 및 언어

NginX 실행시 SELinux 에러에 대한 대처

인디개발자 2022. 3. 24. 09:31

NginX 환경을 80 포트 혹은 443 포트를 이용하지 않고 특정 포트를 별도로 설정해서 사용하는 경우

SELinux 의 보안 정책에 위배되는 메시지가 표시되면 정상적으로 실행되지 않는다.

 

다음과 같이 현재 시스템의 방화벽의 포트 정보를 확인하여 NginX 에서 사용하려는 포트가 허용되는지 확인을 한다.

[root@localhost]# firewall-cmd --list-port

만약 해당 포트가 88 일 경우 다음과 같이 추가해 준다.

 [root@localhost]# firewall-cmd --permanent --zone=public --add-port=8800/tcp
 success
 [root@localhost]# firewall-cmd --reload
 success

 

NginX 를 실행하여 다음과 같은 종류의 에러를 발견한다면

SELinux is preventing /usr/sbin/nginx from name_bind access on the tcp_socket port 8800

이것은 SELinux 보안 정책의 http_port_t 에 해당 포트를 설정하지 않았기 때문이다.

다음과 같은 명령으로 현재 등록된 포트를 확인할 수 있다.

[root@localhost]# semanage port -l | grep http_port_t
http_port_t tcp 80, 443, 1443

다음과 같이 해당 포트를 추가해 준다.

[root@localhost]# semanage port -a -t http_port_t -p tcp 8800

 

이제 NginX 의 테스트 옵션으로 동작에 대한 검증을 확인 할 수 있다.

[root@localhost]# nginx -t
 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
 nginx: configuration file /etc/nginx/nginx.conf test is successful
반응형
Comments