V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Gabrielle70
V2EX  ›  程序员

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

  •  
  •   Gabrielle70 · 266 天前 · 1558 次点击
    这是一个创建于 266 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 的虚拟机设置面板上还要其他啥的要设置吗? 虚拟机内部还要其他啥的要设置吗?

    请大神指教,

    多谢

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

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

    更何况你用 ip 访问,自然是 80 端口了。
    y1y1
        7
    y1y1  
       266 天前 via iPhone
    listen 8081 你访问的时候要带端口号啊 不然走 80 或者 443 了
    dropdatabase
        8
    dropdatabase  
       266 天前 via iPhone
    最简单的办法,把你的 localhost 绑定换成 0.0.0.0 然后用你的公网 ip 访问。注意要加端口。另外虚拟机需要配置安全组放行规则。这样可以不需要配置 nginx 了。当然,想用 nginx 代理也可以。本人可以提供技术支持。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4324 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 05:33 · PVG 13:33 · LAX 21:33 · JFK 00:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.