N8N 설치하기 4단계: 도메인 연결 및 Nginx 설정하기

n8n


N8N 서버를 구축한 후 도메인을 연결하고 Nginx를 설정하면, 보다 직관적이고 안전하게 워크플로우를 관리할 수 있습니다.
이 가이드는 Cloudflare에서 구매한 도메인과 SSL 인증서를 활용하여 N8N 서버를 보호하고, 인증창을 추가하여 접근을 제한하는 방법을 설명합니다.

1. 도메인 연결의 필요성

도메인을 연결하면 다음과 같은 이점이 있습니다:

  1. 사용자 친화적 URL: 복잡한 IP 주소 대신 기억하기 쉬운 도메인을 사용할 수 있습니다. 예를 들어, 192.168.1.1대신 workflow.yourdomain.com을 사용하는 것이 더 직관적입니다. 이렇게 하면 사용자는 더 쉽게 서버에 접속할 수 있습니다.
  2. 보안 강화: HTTPS를 적용하여 데이터를 안전하게 보호합니다. 예를 들어, 사용자가 로그인 정보를 전송하거나 민감한 데이터를 다루는 경우 암호화된 연결이 필수적입니다. 이를 통해 데이터 도청 위험을 줄일 수 있습니다.
  3. 전문성 부각: 사용자와 고객에게 신뢰를 줄 수 있는 프로페셔널한 서버 환경을 제공합니다. 예를 들어, https://secure.mycompany.com과 같은 URL은 회사의 신뢰도를 높이는 데 기여합니다.

2. SSL 인증서 생성

HTTPS를 적용하려면 Cloudflare에서 제공하는 SSL 인증서를 사용합니다. 아래 단계를 따라 설정하세요:

** 도메인 구매와 설정을 자세히 알아보려면 클릭하세요 **

  1. Cloudflare에서 “SSL/TLS” 설정으로 이동하여 “Flexible” 또는 “Full” 모드를 활성화합니다.
  2. Cloudflare의 Origin SSL 인증서(원본서버)를 다운로드합니다.
  3. 인증서를 Nginx 서버에 업로드하고 아래 경로에 저장합니다:
    • 인증서: /etc/nginx/ssl/cloudflare.pem
    • 키 파일: /etc/nginx/ssl/cloudflare-key.pem
  4. Nginx 설정 파일에서 올바른 경로를 지정했는지 확인합니다.
SSL 생성-1
SSL 생성-2

“생성” 버튼을 클릭하면 Cloudflare가 다음 두 가지를 제공합니다:

  1. 원본 인증서(Certificate): 서버에서 사용하는 인증서입니다.
  2. 개인 키(Private Key): 이 키는 절대 유출되지 않도록 해야 합니다. 인증서 파일과 함께 서버에 설치해야 합니다.
SSL 생성-3

인증서를 생성한 후 다음 단계를 꼭 수행하세요:

  1. 인증서와 개인 키를 다운로드하여 안전한 위치에 저장하세요.
    • 개인 키는 특히 보안에 신경 써야 하며, 외부에 노출되면 안 됩니다.
  2. 인증서를 잃어버리면 다시 생성해야 하므로 백업해두세요.

3. Nginx 설치 및 설정 준비

3.1 Nginx 설치

Nginx는 웹 서버 역할을 하며, HTTP 요청을 처리하고 HTTPS를 지원하여 보안을 강화합니다. 먼저 서버에 Nginx를 설치해야 합니다. 아래 명령어를 실행하세요:

sudo apt update
sudo apt install nginx -y
nginx -1 설치

위 이미지처럼 나오면 정상입니다.

설치 후, Nginx가 정상적으로 실행 중인지 확인합니다:

sudo systemctl status nginx
nginx -2 설정

Tip: 상태가 “active (running)”으로 표시되면 설치가 완료된 것입니다.
Q를 치면 수동으로 작업이 완료됩니다.

Troubleshooting: 설치 중 문제가 발생할 경우 아래를 확인하세요:

  • 문제: “패키지 업데이트 실패” 오류.
    • 해결 방법: sudo apt update 명령어를 실행한 후 다시 시도합니다.
  • 문제: “nginx.service not found” 오류.
    • 해결 방법: Ubuntu 버전이 지원하는지 확인하거나 패키지 목록을 최신 상태로 유지합니다.
  • 문제: 방화벽이 Nginx를 차단 중.
    • 해결 방법: sudo ufw allow 'Nginx Full' 명령어를 실행하여 포트를 허용합니다.
  • 문제: 포트 충돌 발생.
    • 해결 방법: 다른 프로세스가 80번 또는 443번 포트를 사용하는지 확인하려면 sudo netstat -tuln | grep ':80\|:443' 명령어를 사용하세요. 충돌 프로세스를 중지하거나 Nginx 설정에서 포트를 변경합니다.

4. SSL 인증서 저장

4.1 SSL 디렉터리 생성

  • 아래 명령어를 사용하여 SSL 디렉터리를 생성합니다.
sudo mkdir -p /etc/nginx/ssl

4.2 Origin Certificate 저장

  • 다음 명령어를 입력합니다.
sudo nano /etc/nginx/ssl/cloudflare.pem
  • Cloudflare에서 제공한 Origin Certificate 내용을 복사하여 파일에 붙여넣고 저장합니다.
  • 파일 저장 방법 : Ctrl+O 누르고 Enter 누름 마지막으로 Ctrl+X 누르면 종료됩니다.
SSL 생성-4
SSL 생성-5

4.3 Private Key 저장

  • 다음 명령어를 입력합니다.
sudo nano /etc/nginx/ssl/cloudflare-key.pem
SSL 생성-6
SSL 생성-7
  • Cloudflare에서 제공한 Private Key 내용을 복사하여 파일에 붙여넣고 저장합니다.

SSL 인증서가 성공적으로 적용되었는지 테스트하려면 아래 명령어를 실행하세요.

sudo nginx -t
sudo systemctl reload nginx
SSL 8

출력 내용 분석

  1. nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    • NGINX의 메인 설정 파일(/etc/nginx/nginx.conf)의 문법에 문제가 없다는 뜻입니다.
    • 설정 파일 내의 구문이 올바르다는 것을 확인한 결과입니다.
  2. nginx: configuration file /etc/nginx/nginx.conf test is successful
    • 설정 파일의 구문 테스트가 성공적으로 완료되었음을 의미합니다.
    • 즉, 설정 파일을 실제로 적용해도 에러 없이 작동할 준비가 되었다는 뜻입니다.
ssl 설정-9

이 명령어로 NGINX를 다시 로드하면 변경된 설정이 적용됩니다.

** 클라우페어에서 도메인 구매후 설정하기**

5. Nginx 설정 파일 구성

5.1 기본 설정 파일 위치

Nginx 설정 파일은 /etc/nginx/sites-available 디렉토리에 있습니다.
새 설정 파일을 생성하세요:

sudo nano /etc/nginx/sites-available/n8n

5.2 설정 파일 내용 작성

아래 내용을 복사하여 붙여넣으세요.
yourdomain.com을 사용 중인 본인 도메인으로 변경하세요.

# HTTP -> HTTPS 리다이렉트
server {
    listen 80;
    server_name yourdomain.com; # 본인 도메인으로 변경

    # HTTP 요청을 HTTPS로 리다이렉트
    return 301 https://$host$request_uri;
}

# HTTPS 설정 (Cloudflare SSL 사용)
server {
    listen 443 ssl;
    server_name yourdomain.com; # 본인 도메인으로 변경

    # Cloudflare의 SSL 인증서 사용
    ssl_certificate /etc/nginx/ssl/cloudflare.pem;  # SSL 인증서 경로
    ssl_certificate_key /etc/nginx/ssl/cloudflare-key.pem;  # 인증서 키 경로

    # 추가 SSL 설정
    ssl_protocols TLSv1.2 TLSv1.3;  # Cloudflare가 지원하는 프로토콜
    ssl_prefer_server_ciphers off;  # 클라이언트 암호화를 우선
    ssl_session_cache shared:SSL:10m;  # 세션 캐시 설정

    # HTTP Basic Authentication 추가
    auth_basic "Restricted Access";  # 인증창에 표시될 메시지
    auth_basic_user_file /etc/nginx/.htpasswd;  # 인증 파일 경로

    # n8n에 대한 프록시 설정
    location / {
        proxy_pass http://localhost:5678;  # N8N 서버의 로컬 주소로 요청 전달
        proxy_set_header Host $host;  # 원래 요청의 호스트 헤더 전달
        proxy_set_header X-Real-IP $remote_addr;  # 클라이언트의 실제 IP 전달
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 프록시 체인을 통해 클라이언트 IP 전달
        proxy_set_header X-Forwarded-Proto $scheme;  # 요청의 프로토콜(HTTP/HTTPS) 전달

        proxy_http_version 1.1;  # HTTP 버전 설정
        proxy_set_header Upgrade $http_upgrade;  # WebSocket 연결 지원
        proxy_set_header Connection "upgrade";  # WebSocket 연결 업그레이드

        chunked_transfer_encoding off;  # 청크 전송 비활성화
        proxy_buffering off;  # 프록시 버퍼링 비활성화 (실시간 응답)
        proxy_cache off;  # 프록시 캐싱 비활성화
    }
}
nginx -3 설정

Ctrl+O 누른뒤 Enter 를 누르면 파일이 저장됩니다.
Ctrl+X 를 누르면 종료됩니다.

5.3 Nginx를 통한 포트 관리 원리

  • Nginx를 설정하면, 외부에서 n8n에 접근할 때 Nginx가 대신 요청을 처리하고 n8n Docker 컨테이너(내부 포트 5678)로 전달합니다.
  • 외부 사용자는 Nginx가 열어둔 포트(보통 80번과 443번)를 통해서만 n8n에 접근하게 됩니다.
  • 따라서, Google Cloud의 방화벽에서 포트 5678을 닫아도 n8n은 정상 작동합니다.
    즉 지난번 방화벽에서 생성한 포트5678를 삭제합니다.

5.4 포트 5678 삭제 후의 보안 이점

포트 5678을 닫으면:

  • 모든 요청은 Nginx를 통해 처리되므로 HTTPS를 적용하여 보안을 추가로 확보할 수 있습니다.
  • 외부에서 n8n의 내부 포트로 직접 접근할 수 없으므로 보안이 강화됩니다.

5.5 설정 활성화

설정 파일을 활성화하려면 다음 명령어를 입력하세요:

sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/

기존 기본 설정을 비활성화하려면 다음을 실행하세요:

sudo unlink /etc/nginx/sites-enabled/default

6. HTTP Basic Authentication 설정

웹사이트에 인증창을 추가하여 허가된 사용자만 접근할 수 있도록 설정하려면 아래 단계를 따르세요:

  • .htpasswd명령어를 사용하여 인증 파일을 생성합니다.
sudo apt-get install apache2-utils  # htpasswd 명령어 설치
sudo htpasswd -c /etc/nginx/.htpasswd 사용자이름(임의대로 만듭니다.)
  • 위 명령어는 사용자이름이라는 사용자 계정을 생성하며, 비밀번호를 입력하라는 메시지가 나타납니다.
  • 이후 인증 파일은 /etc/nginx/.htpasswd에 저장됩니다.
  • Nginx 설정에 인증 적용: 위 설정 파일에 이미 auth_basic과 auth_basic_user_file항목이 포함되어 있습니다. 이를 유지하면 인증이 활성화됩니다.
  • Nginx 재시작: sudo systemctl reload nginx

이제 인증창이 활성화되었으며, 여러 사용자와 함께 .htpasswd파일을 효과적으로 관리할 수 있습니다.


7. 정상 작동 확인

웹 브라우저에서 https://본인도메인 을 입력하면 인증창이 표시되고, 로그인 후 N8N 서버가 정상적으로 작동해야 합니다.

인증창

문제 해결: Nginx 로그를 확인하려면 아래 명령어를 사용하세요:

sudo tail -f /var/log/nginx/error.log

결론

이제 도메인이 연결되고 SSL이 적용된 안전한 N8N 서버를 사용할 준비가 완료되었습니다.
인증창을 추가하여 허가된 사용자만 접근할 수 있도록 보호했습니다.
Nginx는 부하 분산 및 캐싱 설정을 통해 서버의 확장성과 성능을 최적화할 수 있습니다. 예를 들어, 여러 서버로 트래픽을 분산하거나 정적 콘텐츠를 캐싱하여 응답 시간을 단축할 수 있습니다.
또한, Cloudflare의 보안 기능(예: DDoS 방어 및 WAF)을 활용하면 서버를 외부 위협으로부터 안전하게 보호할 수 있습니다.

이러한 설정을 통해 더 안전하고 신뢰할 수 있는 환경을 구축할 수 있습니다. 추가로 서버 확장과 보안 강화를 위해 Nginx와 Cloudflare의 고급 기능을 활용해 보세요.

N8N 단계별 설치 가이드

N8N 설치하기 1단계 : 클라우드 서버 설치 다시보기

N8N 설치하기 2단계 : Docker 설치 다시보기

N8N 설치하기 3단계 : N8N 설치

N8N 설치하기 4단계 : 도메인 연결 및 nginx 설정 보러가기

N8N 설치 도메인 구매 및 설정

N8N 버전 업데이트 하는 방법

동적 IP와 Cloudflare를 활용한 n8n 무료 운영 가이드

Similar Posts