需要用 nginx 帮助回答 POST
Need helping answering POST with nginx
我正在编写一个需要响应 HTTP POST 挑战的 slack 机器人,我想我会用 nginx 来解决这个问题。它应该以 HTTP 200 响应,但我不知道如何实现它。这是文档:https://api.slack.com/events-api#url_verification
我不确定我是否应该在脚本中或使用像 nginx 这样的 Web 服务器来执行此操作?
但是,如果我使用 nginx,一个基本的配置应该如何应对上述挑战?
我对此很陌生,如果这没有意义,我很抱歉。
我的服务器上有一个 hipchat 机器人 运行ning,它使用 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;
}
}
而javascript只是在内部监听端口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)
为了让这个脚本 运行ning 在我的服务器上作为守护进程,我正在使用 pm2
您可以运行任何其他后端。
我正在编写一个需要响应 HTTP POST 挑战的 slack 机器人,我想我会用 nginx 来解决这个问题。它应该以 HTTP 200 响应,但我不知道如何实现它。这是文档:https://api.slack.com/events-api#url_verification
我不确定我是否应该在脚本中或使用像 nginx 这样的 Web 服务器来执行此操作?
但是,如果我使用 nginx,一个基本的配置应该如何应对上述挑战?
我对此很陌生,如果这没有意义,我很抱歉。
我的服务器上有一个 hipchat 机器人 运行ning,它使用 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;
}
}
而javascript只是在内部监听端口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)
为了让这个脚本 运行ning 在我的服务器上作为守护进程,我正在使用 pm2
您可以运行任何其他后端。