http://localhost:7071提供了本地运行的Azure Functions应用。 服务器端渲染的React应用在http://localhost:7070公开。 功能应用程序和react应用程序都从本地托管的简单nginx容器(http://localhost:7072)反向代理。为了完整起见,这里是nginx conf:
http {
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name mywebapp-localdev;
location /api {
proxy_pass http://10.0.75.1:7071;
}
location / {
proxy_pass http://10.0.75.1:7070;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
这是问题所在:如果直接从浏览器中命中了地址http://10.0.75.1:7071/api/hello-world,该函数的行为将与预期的一样。但是,如果通过反向代理(http://localhost:7072/api/hello-world)调用该函数,则会超时。在Nginx容器内进行的几次测试还表明,10.0.75.1上的端口7071无法访问。
问题是:如何从也在本地运行的Docker容器访问本地运行的Azure函数(使用func host start
)?
答案 0 :(得分:1)
知道了
除了使用上面提到的IP地址,还需要使用内部主机解析地址( host.docker.internal ):
{
location / {
proxy_pass http://host.docker.internal:7070;
}
}
我偶然发现了许多不同的答案,具体取决于Docker的版本。这样就解决了。