[SELinux] nginx: [emerg] bind() to 0.0.0.0:443 failed (13: Permission denied)
-- Unit nginx.service has begun starting up.
Oct 29 07:30:20 host nginx[29837]: nginx: [emerg] bind() to 0.0.0.0:443 failed (13: Permission denied)
Oct 29 07:30:20 host systemd[1]: nginx.service: control process exited, code=exited status=1
Oct 29 07:30:20 host systemd[1]: Failed to start nginx - high performance web server.
-- Subject: Unit nginx.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit nginx.service has failed.
--
-- The result is failed.
Oct 29 07:30:20 host systemd[1]: Unit nginx.service entered failed state.
Oct 29 07:30:20 host systemd[1]: nginx.service failed.
Oct 29 07:30:20 host polkitd[583]: Unregistered Authentication Agent for unix-process:29827:605576299 (system bus name :1.93831, object path /org/freedesktop/
(1) 까닭
SELinux를 쓰는 때에 위처럼 권한 문제로 nginx에서 특정 포트를 쓰지 못한다는 오류가 날 수 있다. HTTP 3.0을 쓰려고 하는 때에는 UDP 포트가 방화벽에 막혔기 때문일 수도 있다.
(2) 풀기
1) SELinux 끄기
보안을 생각한다면 SELinux를 끄는 것은 권장할 방법은 아니다.
① SELinux 임시로 끄기
# setenforce 0
"setenforce 1"로 SELinux를 다시 켤 수 있다. 운영체제를 다시 띄우면 setenforce로 바꾼 설정값은 본래대로 되돌아간다.
② SELinux 영구히 끄기
/etc/selinux/config 파일에서 SELINUX 항목값을 바꾼다.
SELINUX=disabled (끄기)
SELINUX=permissive (끄지만 경고문은 나옴)
이 항목값을 바꾸고 운영체제를 다시 시작하면 운영체제가 뜨는 시간이 평소보다 길게 걸릴 수 있다.
2) SELinux 끄지 않기
○ 포트 번호 등록하기
SELinux를 그대로 쓰되 semanage로 특정 포트를 http 통신에 쓸 수 있게 등록한다. 443 포트를 udp 전송에 쓰려면 아래처럼 넣어 준다.
http 통신에 쓸 수 있게 허가된 포트 번호들은 "semanage port -l | grep http_port_t"으로 확인할 수 있다.
▣ 참고한 곳 : https://www.burndogfather.com/192
덧글을 달아 주세요