意外的HTTP请求:POST / mqtt / auth

时间:2018-08-15 09:41:15

标签: mqtt emq

我是emqtt的新手。我正在尝试使用emq_auth_http,但无法正常工作。

我有这3个请求来管理一些数据并以状态200发送回数据。

app.post('/mqtt/auth', function(req, res) {
console.log('This is body ', req.body);
res.status(200).send(req.body);
});
app.post('/mqtt/superuser', function(req, res) {
console.log('This is body in superuser ', req.body);
res.status(200).send(req.body);
});
app.get('/mqtt/acl', function(req, res) {
console.log('This is params in acl ', req.params);
res.status(200).send(req.body);
});

关于邮递员的请求工作正常。

我已经在Windows上使用docker配置了我的emqtt。我已经将配置文件放在/etc/plugins/emq_auth_http.conf中。

这是我的配置文件

## Variables: %u = username, %c = clientid, %a = ipaddress, %P = password, %t = topic

auth.http.auth_req = http://127.0.0.1:3000/mqtt/auth
auth.http.auth_req.method = post
auth.http.auth_req.params = clientid=%c,username=%u,password=%P

auth.http.super_req = http://127.0.0.1:3000/mqtt/superuser
auth.http.super_req.method = post
auth.http.super_req.params = clientid=%c,username=%u

## 'access' parameter: sub = 1, pub = 2
auth.http.acl_req = http://127.0.0.1:3000/mqtt/acl
auth.http.acl_req.method = get
auth.http.acl_req.params = 
access=%A,username=%u,clientid=%c,ipaddr=%a,topic=%t

然后我从信息中心启用了emq_auth_http

现在,当我尝试将mqtt客户端连接到服务器时,它没有调用api。它记录

09:28:29.642 [error] Unexpected HTTP Request: POST /mqtt/auth
09:28:29.644 [error] Client(19645050-9d1b-4c50-acf9- 
c1fe7e69eea8@172.17.0.1:60968): Username 'username' login failed for 404

有什么我想念的吗?为什么它不起作用?

谢谢

1 个答案:

答案 0 :(得分:0)

容器中的

127.0.0.1是指容器本身,而不是主机。您应该设置主机ip,通过发出命令<android.support.v7.widget.CardView android:layout_width="40dp" android:layout_height="40dp" app:cardElevation="0dp" app:cardCornerRadius="4dp"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/rounded_user_image" android:scaleType="fitXY"/> </android.support.v7.widget.CardView> 可以从容器中获取主机ip,HTTP Cookie Manager

ps:这样,您可以获取docker机器的ip而不是主机的IP,如果您的服务由Windows提供,则可以从10.0.75.1的容器获取主机的ip。你可以在里面找到 here