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와 함께 시스템 네트워크 제한도 확인해야 함.