将Microsoft Azure Function App 2.0预览绑定到0.0.0.0。

8 浏览
0 Comments

将Microsoft Azure Function App 2.0预览绑定到0.0.0.0。

我有一个用C#编写的Microsoft Azure Function App 2.0预览版,绑定到 http://localhost:7071。\n\"enter\n我该如何使其绑定到0.0.0.0而不是localhost,以便我可以从本地网络上的另一台计算机访问它?\n查看这些Microsoft Docs,我可以看到如何在local.settings.json文件中指定端口\n\n\"Host\": {\n \"LocalHttpPort\": 7071, \n \"CORS\": \"*\" \n}\n\n但是没有说明要使用哪个网络接口。\n从Rails的背景来看,我会使用rails s -b 0.0.0.0来实现这个目的。\n在.net / Azure Function世界中我该如何做到这一点?

0
0 Comments

问题的原因:在绑定Microsoft Azure Function App 2.0 preview到0.0.0.0时,需要使用端口转发或反向代理来实现,否则无法直接将函数宿主暴露在外网。

解决方法:在Windows系统上,可以使用netsh命令进行端口转发,具体命令如下:

C:\>netsh interface portproxy add v4tov4 listenport=8081 ^
        listenaddress=0.0.0.0 connectport=7071 connectaddress=127.0.0.1

这样就可以将本地7071端口的请求转发到8081端口。通过netstat命令可以查看端口的监听情况。

在Linux系统上,可以使用iptables命令进行端口转发。

在Mac系统上,可以使用nginx进行反向代理,具体方法可以参考这里

需要注意的是,虽然Kestrel是服务器,但是设置环境变量ASPNETCORE_URLS为"http://*:7071"没有效果。这可能是因为函数宿主在代码中使用了localhost进行引导,这可能是一个暗示,表明您不应该直接将其暴露在外网,而是应该使用反向代理来访问它。

0