我想实现在一台 Linux 虚拟机上配置 nginx ,用于代理家里这三台虚拟机上的服务,可以实现 https 访问
多谢各位大佬帮助,总计耗时大约3个半小时解决问题
期间再次感谢GPT让我一个菜鸟搞定这玩意
最后重点感谢 @flyingfz 老哥,几句话无比清晰让我感觉这个事情能整,还有其他回复帮助的老哥
2
flyingfz 4 天前 1
1. 首先不用想 443 了 。
2. 路由器上应 启用 ddns ,假设是 abc.tpddns.cn , 这个域名会时刻更新为路由器的 ip. 3. 你拥有的 闲置的域名 , 假设是 ,xxx.com , 4. 在 xxx.com 的解析里, 增加个解析, 例如 : 名 *.home , 类型 cname , 值 abc.tpddns.cn . 5. 路由器上增加个 端口映射,例如 543 ,转发到 Linux 虚拟机的内网 ip 上的 543 端口, 6. Linux 虚拟机的 nginx 监听在 543 端口, 可以使用 acme.sh 通过 dns 方式获取 *.home 的泛域名证书。 7. nginx 再增加各种 server_name 的配置, 例如 abc.home.xxx.com 8. 公网上, 可以使用 https://abc.home.xxx.com:543 访问到。 |
3
Ipsum 4 天前
不建议直接暴露服务,都有公网了最好还是加 vpn 回家直接 http 访问。家宽就算改了 443,80 等端口也会被扫到,isp 一旦扫到了就是断网。如果非要对外使用 https ,直接用 acme.sh 的 dns provider 申请泛域名证书,记得有个 callback 的钩子可以续期后自动 reload nginx 。
|
4
JensenQian 4 天前
搞个 wireguard 连回去完事了
|
5
SenLief 4 天前
公网访问有人扫,尤其是厂商的 ddns 域名,如果家里服务自己使用的话还是 vpn 回家比较好。
|
6
jpyl0423 4 天前 1
|
7
momooc 4 天前
用( github 搜) lego dns 验证方式申请域名,建议 VPN/组网/wireguard 回家,原因就是安全。
|
8
yinmin 4 天前 via iPhone
1. tpddns 域名是无法签发证书,因为你没有 80 、443 端口
2. 你自己域名可以通过 cname 指向 tpddns 域名,设置后 ping 自己域名看看 ip 是否生效 3. 可以部署 acme.sh 使用 alidns 认证,自动签发/续签证书,建议签发自己域名的通配符证书 4. nginx 可以配置 https stream 方式,不同子域名指向后端不同 ip 的服务(具体配置可以问 gpt ) |
9
Andrue 4 天前
套个 VPN 直接组网吧,安全易管理,公网还会被 ISP 阻断
|
10
AndreasG OP @flyingfz
多谢老哥,在研究了,后面配置端口开放时候都指向 nginx 的 ip 对吧, nginx 的内网地址为 192.168.0.50 比如群晖 DSM 的内网为 192.168.1.100:5000 现在我是开放 192.168.1.100 的 5000 映射到公网 后面配置 https 的话应该路由器不开放其他 ip 只开放 nginx 的 ip 和 5000 端口 然后用 nginx 再转发到内网的 192.168.0.100:5000 对吗 然后 https 的证书就配给阿里云的域名, 就行了对吗? 如果在研究一下貌似可以统一配置端口转发,是不是可以顺便实现 192.168.0.100:5000/address 不同的 address 转发到不同的服务中,实现只开放一个端口而访问多个服务,这种方式是否简化访问还相对安全 |
13
AndreasG OP @JensenQian 主要是 iPhone 的 webdav 强制要求 https
|
18
ily433664 3 天前
1 、使用 ddns 工具自动向阿里云 dns 解析你的自有域名
2 、安装 nginx-proxy-manager 并申请证书 2 、外部所有请求都经过 nginx-proxy-manager ,配置转发到各个服务 |