Webhook 노드 공통 이슈
다음은 Webhook 노드에서 자주 발생하는 이슈와 질문 및 권장 해결 방법입니다. 기본적으로 Webhook 노드는 단일 메서드를 사용하는 호출만 수락합니다. Webhook 노드는 각 메서드마다 별도의 출력을 가지므로 메서드에 따라 다른 작업을 수행할 수 있습니다.
다음은 Webhook 노드에서 자주 발생하는 이슈와 질문 및 권장 해결 방법입니다.
여러 HTTP 메서드 수신하기#
기본적으로 Webhook 노드는 단일 메서드를 사용하는 호출만 수락합니다. 예를 들어 GET 또는 POST 요청은 수락할 수 있지만 둘 다 동시에 수락할 수는 없습니다. 여러 메서드를 사용하는 호출을 수락하려면:
- 노드 Settings를 엽니다.
- Allow Multiple HTTP Methods를 켭니다.
- Parameters로 돌아갑니다. 이제 기본적으로 노드가 GET 및 POST 호출을 모두 수락합니다. HTTP Methods 필드에서 다른 메서드를 추가할 수 있습니다.
Webhook 노드는 각 메서드마다 별도의 출력을 가지므로 메서드에 따라 다른 작업을 수행할 수 있습니다.
HTTP Request 노드를 사용하여 Webhook 노드 트리거하기#
HTTP Request 노드는 지정한 URL로 HTTP 요청을 보냅니다.
- 새 워크플로우를 생성합니다.
- 워크플로우에 HTTP Request 노드를 추가합니다.
- Request Method 드롭다운 목록에서 메서드를 선택합니다. 예를 들어 Webhook 노드에서 HTTP method로 GET을 선택했다면 HTTP Request 노드에서도 GET을 request method로 선택합니다.
- Webhook 노드의 URL을 복사하여 HTTP Request 노드의 URL 필드에 붙여넣습니다.
- Webhook 노드의 test URL을 사용하는 경우: Webhook 노드와 함께 워크플로우를 실행합니다.
- HTTP Request 노드를 실행합니다.
curl을 사용하여 Webhook 노드 트리거하기#
curl을 사용하여 Webhook 노드를 트리거하는 HTTP 요청을 보낼 수 있습니다.
예제에서 <https://your-n8n.url/webhook/path>를 실제 webhook URL로 교체합니다.
예제는 GET 요청을 사용합니다. HTTP Method에서 설정한 HTTP 메서드를 사용할 수 있습니다.
파라미터 없이 HTTP 요청 보내기:
curl --request GET <https://your-n8n.url/webhook/path>
body 파라미터와 함께 HTTP 요청 보내기:
curl --request POST <https://your-n8n.url/webhook/path> --data 'key=value'
header 파라미터와 함께 HTTP 요청 보내기:
curl --request GET <https://your-n8n.url/webhook/path> --header 'key=value'
파일 전송을 위한 HTTP 요청 보내기:
curl --request POST <https://your-n8n.url/webhook/path> --form 'key=@/path/to/file'
/path/to/file을 전송할 파일의 경로로 교체합니다.
string 타입 응답 보내기#
기본적으로 응답 형식은 JSON 또는 배열입니다. string 타입의 응답을 보내려면:
- Response Mode > When Last Node Finishes를 선택합니다.
- Response Data > First Entry JSON을 선택합니다.
- Add Option > Property Name을 선택합니다.
- 응답이 포함된 속성 이름을 입력합니다. 기본값은
data입니다. - Webhook 노드에 Edit Fields 노드를 연결합니다.
- Edit Fields 노드에서 Add Value > String을 선택합니다.
- Name 필드에 속성 이름을 입력합니다. 이름은 4단계의 속성 이름과 일치해야 합니다.
- Value 필드에 string 값을 입력합니다.
- Keep Only Set을 켜기(녹색)로 전환합니다.
Webhook을 호출하면 Edit Fields 노드의 string 응답을 전송합니다.
Test URL vs Production URL#
n8n은 각 Webhook 노드에 대해 Test URL과 Production URL 두 가지 Webhook URL을 생성합니다.
워크플로우를 구축하거나 테스트하는 동안에는 Test URL을 사용합니다. Webhook URL을 프로덕션에서 사용할 준비가 되면 Production URL을 사용합니다.
| URL 유형 | 트리거 방법 | 수신 지속 시간 | 에디터 UI에 데이터 표시? |
|---|---|---|---|
| Test URL | Listen for test event를 선택하고 소스에서 테스트 이벤트를 트리거합니다. | 120초 | :white_check_mark: |
| Production URL | 워크플로우를 게시(publish)합니다 | 워크플로우가 게시 취소될 때까지 | :x: |
자세한 내용은 Workflow development를 참조합니다.
화이트리스트의 IP 주소 연결 실패#
IP 화이트리스트의 IP 주소에서 연결할 수 없는 경우, n8n이 리버스 프록시 뒤에서 실행 중인지 확인합니다.
그런 경우, n8n이 실행 중인 리버스 프록시의 수로 N8N_PROXY_HOPS 환경 변수를 설정합니다.
경로와 메서드당 하나의 webhook만 허용#
n8n은 각 경로와 HTTP 메서드 조합(예: /my-request에 대한 GET 요청)에 대해 하나의 webhook만 등록을 허용합니다. 이를 통해 어느 webhook이 요청을 수신해야 하는지에 대한 모호성을 방지합니다.
선택한 경로와 메서드가 이미 사용 중이라는 메시지가 표시되면 다음 중 하나를 선택할 수 있습니다.
- 충돌하는 webhook이 있는 워크플로우를 게시 취소(unpublish)합니다.
- 충돌하는 webhook 중 하나의 webhook 경로 및/또는 메서드를 변경합니다.
n8n Cloud에서의 타임아웃#
n8n Cloud는 악성 트래픽으로부터 보호하기 위해 Cloudflare를 사용합니다. Webhook이 100초 이내에 응답하지 않으면 수신 요청이 524 상태 코드로 실패합니다.
이 때문에 이 제한을 초과할 수 있는 장시간 실행 프로세스의 경우 두 개의 별도 webhook을 구성하여 폴링 로직을 도입해야 할 수 있습니다.
- 장시간 실행 프로세스를 시작하고 즉시 응답을 보내는 webhook 하나.
- 프로세스 상태를 조회하고 완료 시 결과를 가져오기 위해 주기적으로 호출할 수 있는 두 번째 webhook.
