RedHat 7.2 서버에 로그인했습니다. 루트에 sudo. ngixx.conf
파일(1.11.7) 에서 역방향 프록시 포트를 다른 서버로 전달하기 위해 UDP 흐름 항목을 추가했습니다.
stream { server { listen 82 udp; proxy_pass xyz:16700; } }
문법 검사 통과:
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
서버를 다시 시작하지 못했습니다.
# service nginx restart
일기 기록:
Dec 20 04:46:23 esp-ss960-1-lnx-vm systemd[1]: Starting nginx - high performance web server...
Dec 20 04:46:23 esp-ss960-1-lnx-vm nginx[64702]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Dec 20 04:46:23 esp-ss960-1-lnx-vm nginx[64702]: nginx: [emerg] bind() to 0.0.0.0:82 failed (13: Permission denied)
Dec 20 04:46:23 esp-ss960-1-lnx-vm nginx[64702]: nginx: configuration file /etc/nginx/nginx.conf test failed
Dec 20 04:46:23 esp-ss960-1-lnx-vm systemd[1]: nginx.service: control process exited, code=exited status=1
Dec 20 04:46:23 esp-ss960-1-lnx-vm systemd[1]: Failed to start nginx - high performance web server.
Dec 20 04:46:23 esp-ss960-1-lnx-vm systemd[1]: Unit nginx.service entered failed state.
Dec 20 04:46:23 esp-ss960-1-lnx-vm systemd[1]: nginx.service failed.
++++++++++++++++++++++++++++++++++++++++++
Dec 20 16:22:37 esp-ss960-1-lnx-vm polkitd[543]: Registered Authentication Agent for unix-process:20990:12402078 (system bus name :1.596 [/usr/bin/pkttyagent --notif
Dec 20 16:22:37 esp-ss960-1-lnx-vm systemd[1]: Starting nginx - high performance web server...
-- Subject: Unit nginx.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit nginx.service has begun starting up.
Dec 20 16:22:38 esp-ss960-1-lnx-vm nginx[21007]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Dec 20 16:22:38 esp-ss960-1-lnx-vm nginx[21007]: nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
Dec 20 16:22:38 esp-ss960-1-lnx-vm nginx[21007]: nginx: configuration file /etc/nginx/nginx.conf test failed
Dec 20 16:22:38 esp-ss960-1-lnx-vm systemd[1]: nginx.service: control process exited, code=exited status=1
Dec 20 16:22:38 esp-ss960-1-lnx-vm 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.
Dec 20 16:22:38 esp-ss960-1-lnx-vm systemd[1]: Unit nginx.service entered failed state.
Dec 20 16:22:38 esp-ss960-1-lnx-vm systemd[1]: nginx.service failed.
Dec 20 16:22:38 esp-ss960-1-lnx-vm polkitd[543]: Unregistered Authentication Agent for unix-process:20990:12402078 (system bus name :1.596, object path /org/freedesk
여기서 무엇이 잘못되었을 수 있습니까? 감사해요
답변1
SELinux로 인해 nginx가 새 포트 구성으로 시작되지 않을 가능성이 높습니다. setenforce 0
SELinux를 일시적으로 비활성화하고 nginx를 다시 시작하여 이를 확인할 수 있습니다 . SELinux가 활성화되었는지 여부는 다음 명령을 통해 확인할 수 있습니다 geteneforce
.
SELinux로 인해 nginx가 시작되지 않는 경우 감사 로그에 이 이벤트와 관련된 일부 항목이 있을 수 있습니다. 이러한 로그 항목을 기반으로 SElinux에 대한 올바른 규칙을 생성하는 것이 가능할 수 있습니다. Red Hat의 좋은 기사입니다.액세스 허용: audit2allow.
물론 SELinux를 완전히 비활성화할 수도 있습니다. 이는 파일을 편집하여 수행할 수 있습니다 /etc/selinux/config
.
답변2
SELinux를 완전히 비활성화하는 것보다 더 적절한 접근 방식은 nginx가 SELinux를 해당 목적에 맞게 활용하도록 허용하는 것입니다.
setsebool -P httpd_can_network_connect 1
작업을 수행합니다.
편집 - 올바른 SELinux 변수는 http입니다.디_can_network_connect는 http_can_network_connect가 아닙니다.