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 266 天前
1 、你的 localhost 是你本机,你在虚拟机上配置的 localhost:3000 指的是虚拟机的 3000 端口
2 、要实现公网访问,把你 3000 端口对应的服务部署到虚拟机上通过 nginx 的 8081 访问! |
2
yxisenx 266 天前 1
location /api/
|
4
MrDarnell 266 天前
要搞内网穿透的
ngrok frp Sunny-Ngrok Natapp Earthworm reDuh reGeorg Tunna 39nat cpolar |
5
cdlnls 266 天前
改成这样:
location /api { proxy_pass http://localhost:3000; } |
6
tunggt 266 天前
新手?纯菜鸟?
不能访问的原因很多种,你光这么说,根本没法确定到底是什么问题。 你这又是 3000 端口,又是 3500 , 另外你 ngnix 用的是 8081 端口? 更何况你用 ip 访问,自然是 80 端口了。 |
7
y1y1 266 天前 via iPhone
listen 8081 你访问的时候要带端口号啊 不然走 80 或者 443 了
|
8
dropdatabase 266 天前 via iPhone
最简单的办法,把你的 localhost 绑定换成 0.0.0.0 然后用你的公网 ip 访问。注意要加端口。另外虚拟机需要配置安全组放行规则。这样可以不需要配置 nginx 了。当然,想用 nginx 代理也可以。本人可以提供技术支持。
|