V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
EdmondGUO
V2EX  ›  宽带症候群

Nginx Proxy Manager 为什么不 work 呢?

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

    OP 是网络苦手,麻烦大佬们帮忙看下,谢谢

    之前的情况

    OP 有公网 IP ,原来的内网穿透方案是 ROS 做端口映射,在 NAT 里做了 dst-nat ,例如将外网的 11190 映射到 192.168.0.110 机器的 1190 ,

    192.168.0.110 机器是一台黑群晖,在上面用自带的反向代理服务器把 http 的 1189 代理成 https 的 1190

    用起来没有问题。后来 OP 想要把网络相关的都放在一个软路由上,于是在软路由虚拟 Alpine 的 docker 上( ip 为 192.168.0.3 )搞了一个 Nginx Proxy Manager

    Nginx Proxy Manager

    首先是 docker 的端口映射,80->51080,443->51443 ,此时访问 http://192.168.0.3:51080 有 NPM 的欢迎页,但是访问 https://192.168.0.3:51443 提示无法访问此网站。

    因为阿里云的 ssl 免费证书是单域名的,还在 NPM 上搞了个 lets encrypt 的 ssl 证书。

    添加了一个 flare 开头的二级域名指向 192.168.0.110 的 1189 ,群晖上那条 http 的 1189 代理成 https 的 1190 的规则也删掉了

    阿里云

    在阿里云上好像没有特别多设置 ,只是 cname 操作了下 flare 二级域名

    ROS

    ROS 软路由上加了一条映射,把外网的 51443 映射到 NPM 那台机器的 51443 上

    ping 和 端口开放情况

    至此,ping 域名和 flare.域名,都可以得到公网 IP ,可以 ping 通,端口检测域名和 flare.域名的 51443 端口都是开放的。

    结果

    手机切了 5G ,https://flare.域名:51443 无法访问。OP 猪脑过载了,问题是出在哪里呢?感觉公网映射的端口还有解析的域名子域名这些都没有问题,应该是把请求给到了 NPM 了,是因为我的 SSL 证书有问题吗? 另外我怀疑是内网访问不了 https://192.168.0.3:51443 ,于是我把 NPM 里面改成 http 的代理,ROS 配置了 51080 的映射,但是外网还是访问不了。

    第 1 条附言  ·  126 天前
    很神秘的事情发生了,今天早上我还试了一下不行,又过了一段时间大概到中午了,反而可以访问了,证书也可以看得到是 Let's Encrypt 签发的证书。
    是不是这中间有哪一步可能会有延迟?
    15 条回复    2024-01-06 00:25:10 +08:00
    Donaldo
        1
    Donaldo  
       126 天前
    无法访问的错误提示是什么呢?可以在电脑上 curl -vvvv https://flare.xxx:51443 看看有没有问题(其实不需要切网,想切的话连你手机热点也可以),现在信息太少了判断不出来问题在哪里,我总结一下,你在做的就是把 110 的 1189 通过域名 flare 反代到 npm 的 51443 ?

    或许看看 110 这台主机的防火墙设置,1189 有没有 allow ?其次 exec 一个 bash 进 npm 的容器,curl 一下看看能不能访问到 110 的 1189 ?
    keegan
        2
    keegan  
       126 天前
    是我浅薄了吗? HTTPS 就是 443 端口,怎么 HTTPS 还能带别的端口呢?
    在我看来简单做法就是,LZ 需要把外网的 443 端口转发到 51443 上面,直接使用 https 访问
    keegan
        3
    keegan  
       126 天前
    @keegan 我说的是在使用 nginx 的时候
    EdmondGUO
        4
    EdmondGUO  
    OP
       126 天前
    @Donaldo 是的 我是想用 NPM 的二级域名 来反代 110 的 1189 。110 没什么防火墙设置,按理说内网的所有机器应该都可以访问他。起码 pc 手机在内网都可以,我回家试一下在 npm 的 bash 里可不可以访问。

    @keegan https 不加端口默认是访问 443 ,其实也可以加端口访问的。因为运营商通常不允许家宽开设网站,所以基本家宽的公网 ip 也是会封禁 80 和 443 端口的。我理解 “需要把外网的 443 端口转发到 51443 上面,直接使用 https 访问”其实和把外网的 51443 转发到 51443 ,https 访问 51443 没有区别。
    EdmondGUO
        5
    EdmondGUO  
    OP
       126 天前
    @Donaldo 不知道为什么睡了一觉起来可以访问了🤣这下小丑了。

    对了,用手机 5G 是因为我是用的 ROS 作端口转发,他不会自动做端口回流,所以用域名访问不了内网的机器。因为我搞了两个 heimdall 导航页也来分别记录内网服务地址和映射出去到公网的地址,有些内网服务没有映射出去,所以没什么用域名访问内网机器的需求了
    Achophiark
        6
    Achophiark  
       126 天前 via Android
    npm:81 才是 web ui 吧
    Achophiark
        7
    Achophiark  
       126 天前 via Android
    npm 内置的 acme 国内怕是不能签发证书吧
    EdmondGUO
        8
    EdmondGUO  
    OP
       126 天前
    @Achophiark #6 81 是管理 ui ,80 443 是他的 http 和 https 端口。今天中午莫名奇妙的好了,也间接证明了它内置的可以用,是 Let's Encrypt 的
    Achophiark
        9
    Achophiark  
       125 天前 via Android
    第一次可以,续签不行的
    keegan
        10
    keegan  
       125 天前
    @EdmondGUO #4 是我浅薄了,我用 nginx 为的就是使用域名直接访问哈哈,没想到还能这么用( https+ip+端口还是了解的)
    jmxct520
        11
    jmxct520  
       125 天前
    @keegan 协议和端口没啥关系,不要局限于一个端口
    ttxhxz
        12
    ttxhxz  
       125 天前   ❤️ 1
    说到国内或者续签不行的。可以试试 image: 'jc21/nginx-proxy-manager:2.9.22'这个版本的 npm 。我这边用它自动申请和续期阿里云的泛域名证书是可以的。后面 npm 升级后就不行了,所以我一直固定在这个版本。
    @Achophiark
    xxgzzzzzz
        13
    xxgzzzzzz  
       121 天前
    lucky 貌似 更轻量.....(虽然我以前也觉着这是个大杂烩)
    EdmondGUO
        14
    EdmondGUO  
    OP
       121 天前
    @xxgzzzzzz 这个之前看到过,但是感觉用的人比较少,所以还是选择了 DDNS-GO + Nginx proxy manager 。反正都是 docker 多一个服务问题也不大
    xxgzzzzzz
        15
    xxgzzzzzz  
       113 天前
    @EdmondGUO #14 收回 NPM 弃了 现在 openwrt 跑 lucky 嗯 真香 自带 ddns-go 功能
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3401 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:08 · PVG 19:08 · LAX 04:08 · JFK 07:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.