V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
AndreasG
V2EX  ›  NGINX

配置证书相关的问题

  •  
  •   AndreasG · 4 天前 · 937 次点击

    手上的资源

    1. 我家只有一条家用宽带意味着我无法使用 80 、443 端口
    2. 家里是动态 ip ,带 ipv4 公网
    3. 公网访问的方法:使用了 tplink 路由器自带的的 tpddns 直接生成的域名
    4. 端口转发使:由于宽带原生支持公网,所以直接开放的端口
    5. 目前在用的公网访问方式: 因为 tpddns 的域名有点长用着麻烦,而刚好我阿里云上还有个闲置的域名,目前是直接解析到 tpddns 域名上用了
    6. 我在阿里云申请了免费的 3 月有效期证书
    7. 家里 Esxi 开了一个群晖和两个 linux 虚拟机

    目前的需求

    我想实现在一台 Linux 虚拟机上配置 nginx ,用于代理家里这三台虚拟机上的服务,可以实现 https 访问
    

    目前遇到的问题

    1. 我申请签发的时候使用了闲置的阿里云域名,秒通过,但是配置了 nginx 之后访问不通(有可能是没配置好,或者是因为二次解析的域名,到达 tpddns 域名的时候就失效了,这部分没怎么测试,昨晚刚申请的)
    2. tpddns 作为域名申请阿里云签发的时候被拒绝了,原因貌似是因为没有 80 和 443 端口

    问题

    1. 我是否可以在一台机器上配置 ngixn 服务用于代理所有家里的服务,因为三台虚拟机的 ip 都不同,如何保证请求是直接发送给 nginx 而不是直接发送到对应的虚拟机上呢
    2. 我的思路很混乱,不太懂 nginx 的代理流程,目前这种两个域名的情况我应该申请签发哪个域名的证书呢
    3. 如果签发完成我需要在 nginx 代理中监听的域名是 阿里云的域名还是 tpddns 的域名呢
    第 1 条附言  ·  3 天前

    多谢各位大佬帮助,总计耗时大约3个半小时解决问题

    1. 是需要一个闲置域名,tpddns 是不能申请证书的,这点歪打正着我刚好有了
    2. 配置证书我一共用了以下几个,有同样问题的小伙伴可以参考以下

    知乎中最简单的配置方式

    哔哩哔哩中大致的配置方式

    acme.sh的项目地址

    acme.sh的项目简单配置的中文文档

    期间再次感谢GPT让我一个菜鸟搞定这玩意

    最后重点感谢 @flyingfz 老哥,几句话无比清晰让我感觉这个事情能整,还有其他回复帮助的老哥

    19 条回复    2024-11-30 00:39:05 +08:00
    leenhawk2
        1
    leenhawk2  
       4 天前
    acme.sh 签名证书,为什么是发送到虚拟机,CNAME 和实际 HTTPS 的头需要的不是一样的,监听你的服务域名
    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 访问到。
    Ipsum
        3
    Ipsum  
       4 天前
    不建议直接暴露服务,都有公网了最好还是加 vpn 回家直接 http 访问。家宽就算改了 443,80 等端口也会被扫到,isp 一旦扫到了就是断网。如果非要对外使用 https ,直接用 acme.sh 的 dns provider 申请泛域名证书,记得有个 callback 的钩子可以续期后自动 reload nginx 。
    JensenQian
        4
    JensenQian  
       4 天前
    搞个 wireguard 连回去完事了
    SenLief
        5
    SenLief  
       4 天前
    公网访问有人扫,尤其是厂商的 ddns 域名,如果家里服务自己使用的话还是 vpn 回家比较好。
    jpyl0423
        6
    jpyl0423  
       4 天前   ❤️ 1
    你这种情况直接上 nginx-proxy-manager

    momooc
        7
    momooc  
       4 天前
    用( github 搜) lego dns 验证方式申请域名,建议 VPN/组网/wireguard 回家,原因就是安全。
    yinmin
        8
    yinmin  
       4 天前 via iPhone
    1. tpddns 域名是无法签发证书,因为你没有 80 、443 端口

    2. 你自己域名可以通过 cname 指向 tpddns 域名,设置后 ping 自己域名看看 ip 是否生效

    3. 可以部署 acme.sh 使用 alidns 认证,自动签发/续签证书,建议签发自己域名的通配符证书

    4. nginx 可以配置 https stream 方式,不同子域名指向后端不同 ip 的服务(具体配置可以问 gpt )
    Andrue
        9
    Andrue  
       4 天前
    套个 VPN 直接组网吧,安全易管理,公网还会被 ISP 阻断
    AndreasG
        10
    AndreasG  
    OP
       3 天前
    @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 转发到不同的服务中,实现只开放一个端口而访问多个服务,这种方式是否简化访问还相对安全
    AndreasG
        11
    AndreasG  
    OP
       3 天前
    @Ipsum 多谢老哥,主要是 iphone 它不能用 http 的 webdav 我才研究这个了
    AndreasG
        12
    AndreasG  
    OP
       3 天前
    @leenhawk2 多谢老哥
    AndreasG
        13
    AndreasG  
    OP
       3 天前
    @JensenQian 主要是 iPhone 的 webdav 强制要求 https
    AndreasG
        14
    AndreasG  
    OP
       3 天前
    @SenLief 多谢老哥建议
    AndreasG
        15
    AndreasG  
    OP
       3 天前
    @jpyl0423 好的,我研究一波,谢谢老哥
    AndreasG
        16
    AndreasG  
    OP
       3 天前
    @momooc wireguard 回家的话是不是只用开放 vpn 的端口就行,然后每台需要纳入 vpn 的服务器都需要注册在 vpn 之下
    AndreasG
        17
    AndreasG  
    OP
       3 天前
    @yinmin 多谢老哥
    ily433664
        18
    ily433664  
       3 天前
    1 、使用 ddns 工具自动向阿里云 dns 解析你的自有域名
    2 、安装 nginx-proxy-manager 并申请证书
    2 、外部所有请求都经过 nginx-proxy-manager ,配置转发到各个服务
    AndreasG
        19
    AndreasG  
    OP
       3 天前
    @ily433664 多谢老哥支招,我最后用了另一个,非常感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1358 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:40 · PVG 01:40 · LAX 09:40 · JFK 12:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.