Azure VM 大佬请进: 如何把 localhost 的 API 暴露到外网给人访问?

236 天前
 Gabrielle70

Azure VM 大佬请进: 如何把 localhost 的 API 暴露到外网给人访问?

应客户需求, 我用 docker 部署了 nodejs 的 api 在 Azure windows 虚拟机上, 现在运行在 localhost:3500/api 上.

Azure windows 虚拟机有个外网 ip 地址 21.72.124.225,

现在需要把该 api 从 localhost 暴露到外网 ip 给人访问.

我现在用 Ngnix 设置了反向代理:

server { listen 8081;
server_name 21.72.124.225;

location /api {
    proxy_pass http://localhost:3000/api;
}

}

防火墙开放了 8081 端口入站

现在问题是:

  1. 我用外网 ip 访问不了 api.

  2. 访问 http://21.72.124.225/api 后出错: error: HTTP Error 404. The requested resource is not found.

请问大佬该如何处理.

在 azure 的虚拟机设置面板上还要其他啥的要设置吗? 虚拟机内部还要其他啥的要设置吗?

请大神指教,

多谢

1525 次点击
所在节点    程序员
8 条回复
WELPHEN
236 天前
1 、你的 localhost 是你本机,你在虚拟机上配置的 localhost:3000 指的是虚拟机的 3000 端口
2 、要实现公网访问,把你 3000 端口对应的服务部署到虚拟机上通过 nginx 的 8081 访问!
yxisenx
236 天前
location /api/
WELPHEN
236 天前
@WELPHEN sry ,没看到 docker ,如果是已经部署在虚拟机上将 docker 容器的 3000 端口映射到宿主机,再通过 nginx 反代。
MrDarnell
236 天前
要搞内网穿透的
ngrok
frp
Sunny-Ngrok
Natapp
Earthworm
reDuh
reGeorg
Tunna
39nat
cpolar
cdlnls
236 天前
改成这样:
location /api {
proxy_pass http://localhost:3000;
}
tunggt
236 天前
新手?纯菜鸟?
不能访问的原因很多种,你光这么说,根本没法确定到底是什么问题。

你这又是 3000 端口,又是 3500 , 另外你 ngnix 用的是 8081 端口?

更何况你用 ip 访问,自然是 80 端口了。
y1y1
236 天前
listen 8081 你访问的时候要带端口号啊 不然走 80 或者 443 了
dropdatabase
236 天前
最简单的办法,把你的 localhost 绑定换成 0.0.0.0 然后用你的公网 ip 访问。注意要加端口。另外虚拟机需要配置安全组放行规则。这样可以不需要配置 nginx 了。当然,想用 nginx 代理也可以。本人可以提供技术支持。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1029516

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX