1. Background
N8n self-hosted 연결 당시에 분명이 다 잘했다고 판단되었는데, 계속 연결이 안되는 이슈가 발생...
도대체 뭐지 하고, nginx 로그를 열어보니
`tail -f /var/log/nginx/error.log
다량의 Permission Denied 가 발생
2025/10/12 12:45:38 [crit] 170847#170847: *11 connect() to [::1]:5678 failed (13: Permission denied) while connecting to upstream, client: 192.168.0.1, server: debug.revelope.kr, request: "GET /n8n/ HTTP/1.1", upstream: "http://[::1]:5678/", host: "debug.revelope.kr"
2025/10/12 12:45:40 [error] 170847#170847: *11 no live upstreams while connecting to upstream, client: 192.168.0.1, server: debug.revelope.kr, request: "GET /n8n/ HTTP/1.1", upstream: "http://localhost/", host: "debug.revelope.kr"
2025/10/12 12:45:42 [error] 170847#170847: *11 no live upstreams while connecting to upstream, client: 192.168.0.1, server: debug.revelope.kr, request: "GET /n8n/ HTTP/1.1", upstream: "http://localhost/", host: "debug.revelope.kr"
2025/10/12 12:45:43 [error] 170847#170847: *11 no live upstreams while connecting to upstream, client: 192.168.0.1, server: debug.revelope.kr, request: "GET /n8n/ HTTP/1.1", upstream: "http://localhost/", host: "debug.revelope.kr"
2025/10/12 12:45:46 [error] 170847#170847: *11 no live upstreams while connecting to upstream, client: 192.168.0.1, server: debug.revelope.kr, request: "GET /n8n/ HTTP/1.1", upstream: "http://localhost/", host: "debug.revelope.kr"
2025/10/12 12:48:49 [crit] 170847#170847: *19 connect() to 127.0.0.1:5678 failed (13: Permission denied) while connecting to upstream, client: 192.168.0.1, server: debug.revelope.kr, request: "GET /n8n/ HTTP/1.1", upstream: "http://127.0.0.1:5678/", host: "debug.revelope.kr"
2025/10/12 12:48:49 [crit] 170847#170847: *19 connect() to [::1]:5678 failed (13: Permission denied) while connecting to upstream, client: 192.168.0.1, server: debug.revelope.kr, request: "GET /n8n/ HTTP/1.1", upstream: "http://[::1]:5678/", host: "debug.revelope.kr"
2025/10/12 12:51:08 [crit] 170847#170847: *23 connect() to 127.0.0.1:5678 failed (13: Permission denied) while connecting to upstream, client: 192.168.0.1, server: debug.revelope.kr, request: "GET /n8n/ HTTP/1.1", upstream: "http://127.0.0.1:5678/", host: "debug.revelope.kr"
2025/10/12 12:51:08 [crit] 170847#170847: *23 connect() to [::1]:5678 failed (13: Permission denied) while connecting to upstream, client: 192.168.0.1, server: debug.revelope.kr, request: "GET /n8n/ HTTP/1.1", upstream: "http://[::1]:5678/", host: "debug.revelope.kr"
이유가 뭘까 ... 하고 Perplexity 에 물어보니 아래와 같이 답변
간단하게 요약하자면 SELinux 설정으로 인해 특정 APP 이 로컬호스트의 소켓을 접근하려하면 차단 (아마도 root 권한으로 실행되지 않았다면... )
=> 이걸 풀어주면 된다.
setsebool -P httpd_can_network_connect 1
Perplexity 답변
로그에 Permission denied 에러가 반복되고 있습니다.
이는 nginx가 내부 127.0.0.1:5678 또는 [::1]:5678로 프록시 연결을 시도할 때 OS 수준에서 권한이 거부된 경우입니다.
주요 원인과 해결 방법
1. SELinux 또는 AppArmor 정책
CentOS, RHEL, 일부 Ubuntu에서는 SELinux/AppArmor가 실행 중일 때 nginx가 로컬 소켓(127.0.0.1, [::1])로 직접 연결하는 것을 강제로 막을 수 있습니다.
SELinux 활성화 상태에서는 httpd/nginx가 네트워크를 통해 외부 포트로 접근하는 것이 차단됩니다.
해결법:
SELinux가 활성화 되어 있다면 아래 명령으로 특정 포트(5678)에 대한 허용을 추가할 수 있습니다:
bash
setsebool -P httpd_can_network_connect 1일시적으로 SELinux를 꺼서 테스트:
bash
setenforce 0영구적으로 비활성화하려면
/etc/selinux/config파일에서SELINUX=disabled로 변경 후 재부팅.
2. 방화벽 또는 포트 접근 권한 부족
서버 방화벽(firewalld, ufw 등)에서 localhost 내부 연결까지 막는 케이스가 드물지만 있을 수 있음.
해결법:
- 해당 포트가 내부에서 열려 있고 방화벽에서 차단되지 않았는지 확인.
3. nginx 프로세스 권한 체크
nginx가 기본적으로
nginx혹은www-data등 제한된 권한으로 실행되며, 이 계정에 5678 포트 접근 권한이 부족할 수 있음.n8n이 root/다른 사용자로 띄워져 있으면 권한 충돌 발생.
해결법:
- nginx와 n8n 모두 동일한 사용자 또는 충분한 권한에서 실행하거나, SELinux 허용 정책을 추가.
4. OS 소켓 제한
- 일부 시스템에서는 loopback 소켓 접근 제한 option이 존재함. 이 경우 nginx config와 함께 시스템 네트워크 제한도 확인해야 함.