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 端口入站
现在问题是:
我用外网 ip 访问不了 api.
访问 http://21.72.124.225/api 后出错: error: HTTP Error 404. The requested resource is not found.
请问大佬该如何处理.
在 azure 的虚拟机设置面板上还要其他啥的要设置吗? 虚拟机内部还要其他啥的要设置吗?
请大神指教,
多谢
![]() |
1
WELPHEN 2024-04-03 16:56:10 +08:00
1 、你的 localhost 是你本机,你在虚拟机上配置的 localhost:3000 指的是虚拟机的 3000 端口
2 、要实现公网访问,把你 3000 端口对应的服务部署到虚拟机上通过 nginx 的 8081 访问! |
![]() |
2
yxisenx 2024-04-03 16:59:27 +08:00 ![]() location /api/
|
![]() |
3
WELPHEN 2024-04-03 16:59:39 +08:00
@WELPHEN sry ,没看到 docker ,如果是已经部署在虚拟机上将 docker 容器的 3000 端口映射到宿主机,再通过 nginx 反代。
|
![]() |
4
MrDarnell 2024-04-03 17:00:52 +08:00
要搞内网穿透的
ngrok frp Sunny-Ngrok Natapp Earthworm reDuh reGeorg Tunna 39nat cpolar |
![]() |
5
cdlnls 2024-04-03 17:04:52 +08:00
改成这样:
location /api { proxy_pass http://localhost:3000; } |
6
tunggt 2024-04-03 18:02:38 +08:00
新手?纯菜鸟?
不能访问的原因很多种,你光这么说,根本没法确定到底是什么问题。 你这又是 3000 端口,又是 3500 , 另外你 ngnix 用的是 8081 端口? 更何况你用 ip 访问,自然是 80 端口了。 |
![]() |
7
y1y1 2024-04-03 19:09:41 +08:00 via iPhone
listen 8081 你访问的时候要带端口号啊 不然走 80 或者 443 了
|
8
dropdatabase 2024-04-03 22:17:00 +08:00 via iPhone
最简单的办法,把你的 localhost 绑定换成 0.0.0.0 然后用你的公网 ip 访问。注意要加端口。另外虚拟机需要配置安全组放行规则。这样可以不需要配置 nginx 了。当然,想用 nginx 代理也可以。本人可以提供技术支持。
|