2017-04-22 1 views
0

저는 HTTP POST 과제에 응답해야하는 느슨한 봇을 작성하고 있습니다. 저는 이것을 nginx로 생각했습니다. 그것은 HTTP를 200으로 응답해야하지만 난 아무 실마리가 이것을 구현하는 방법. 다음은 문서입니다. https://api.slack.com/events-api#url_verificationnginx로 POST에 응답하는 데 도움이 필요합니다.

스크립트 나 nginx와 같은 웹 서버에서이 작업을 수행해야합니까?

그러나 nginx를 사용하는 경우 위의 문제에 어떻게 대응할 수있는 기본 구성이 어떻게 생겼습니까?

저는이 말에 매우 익숙합니다. 그래서이 말이 이해가 안된다면 죄송합니다.

답변

1

나는 nginx와 nodejs로 내 서버에서 실행중인 힙합 봇을가집니다. 는 여기에 내가 nginx.conf에있는 내용은 다음과 같습니다

upstream my_bot { 
    server 127.0.0.1:3300; 
    keepalive 8; 
} 

server { 
    listen 80; 
    server_name your.address.com; 
    location/{ 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_set_header X-NginX-Proxy true; 

     proxy_pass http://my_bot; 
     proxy_redirect off; 
    } 
} 

그리고 자바 스크립트는 단순히 내부 포트 3300에서 수신 대기 :

const Http = require('http') 

var server = Http.createServer(function(req, res) { 
    if (req.method != 'POST') { 
     res.writeHead(400, {'Content-Type': 'text/plain'}) 
     res.end('Error') 
     return 
    } 
    var body = '' 
    req.on('data', function (data) { 
     body += data 
    }) 
    req.on('end', function() { 
     try{ 
      message = JSON.parse(body) 
     } 
     catch(e) { 
      /* Not a JSON. Write error */ 
      res.writeHead(400, {'Content-Type': 'text/plain'}) 
      res.end('Format Error') 
      return 
     } 
     if (message.token != '<your token here>') { 
      /* Not valid token. Write error */ 
      res.writeHead(400, {'Content-Type': 'text/plain'}) 
      res.end('Token Error') 
      return 
     } 
     /* Do your stuff with request and respond with a propper challenge field */ 
     res.writeHead(200, {'Content-Type': 'application/json'}) 
     res.end(JSON.stringify({challenge: message.challenge})) 
    }) 
}) 
server.listen(3300) 

내가 pm2을 사용하고 데몬으로 내 서버에서 실행되는 스크립트를 가지고

다른 백 엔드를 실행할 수 있습니다.

관련 문제