Nginx Proxy Manager 为什么不 work 呢?

2023-12-24 00:06:15 +08:00
 EdmondGUO

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 的映射,但是外网还是访问不了。

2475 次点击
所在节点    宽带症候群
15 条回复
Donaldo
2023-12-24 01:05:33 +08:00
无法访问的错误提示是什么呢?可以在电脑上 curl -vvvv https://flare.xxx:51443 看看有没有问题(其实不需要切网,想切的话连你手机热点也可以),现在信息太少了判断不出来问题在哪里,我总结一下,你在做的就是把 110 的 1189 通过域名 flare 反代到 npm 的 51443 ?

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

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

对了,用手机 5G 是因为我是用的 ROS 作端口转发,他不会自动做端口回流,所以用域名访问不了内网的机器。因为我搞了两个 heimdall 导航页也来分别记录内网服务地址和映射出去到公网的地址,有些内网服务没有映射出去,所以没什么用域名访问内网机器的需求了
Achophiark
364 天前
npm:81 才是 web ui 吧
Achophiark
364 天前
npm 内置的 acme 国内怕是不能签发证书吧
EdmondGUO
364 天前
@Achophiark #6 81 是管理 ui ,80 443 是他的 http 和 https 端口。今天中午莫名奇妙的好了,也间接证明了它内置的可以用,是 Let's Encrypt 的
Achophiark
364 天前
第一次可以,续签不行的
keegan
364 天前
@EdmondGUO #4 是我浅薄了,我用 nginx 为的就是使用域名直接访问哈哈,没想到还能这么用( https+ip+端口还是了解的)
jmxct520
364 天前
@keegan 协议和端口没啥关系,不要局限于一个端口
ttxhxz
363 天前
说到国内或者续签不行的。可以试试 image: 'jc21/nginx-proxy-manager:2.9.22'这个版本的 npm 。我这边用它自动申请和续期阿里云的泛域名证书是可以的。后面 npm 升级后就不行了,所以我一直固定在这个版本。
@Achophiark
xxgzzzzzz
360 天前
lucky 貌似 更轻量.....(虽然我以前也觉着这是个大杂烩)
EdmondGUO
359 天前
@xxgzzzzzz 这个之前看到过,但是感觉用的人比较少,所以还是选择了 DDNS-GO + Nginx proxy manager 。反正都是 docker 多一个服务问题也不大
xxgzzzzzz
352 天前
@EdmondGUO #14 收回 NPM 弃了 现在 openwrt 跑 lucky 嗯 真香 自带 ddns-go 功能

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

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

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

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

© 2021 V2EX