用Cloudflare代理域名,又想让其中一个域名通过HTTPS访问,但实际转发到服务器的HTTP服务,其他域名继续正常HTTPS转发。用 djylb/nps,所有版本均支持按域名证书智能判断,无需额外配置。
核心逻辑:给某个域名上传SSL证书,NPS就接管SSL解密,把明文HTTP请求转发给内网服务;没上传证书的域名,NPS直接HTTPS透传,由内网服务器自己处理SSL。
具体操作三步:
第一步:生成Cloudflare Origin证书
登录Cloudflare,进入你的域名,点 SSL/TLS → 源服务器,点击 创建证书。主机名只填你需要指定的那个域名,有效期选15年。创建后,立刻保存好 Certificate 和 Private Key,Private Key只显示一次。
第二步:在NPS Web界面绑定证书
登录NPS管理后台,找到域名解析或域名隧道列表,编辑那个需要走HTTP的域名。在编辑页面中,把刚才保存的 Certificate 内容粘贴到 HTTPS 证书 (pem格式) 字段,Private Key 内容粘贴到 HTTPS 密钥 (key格式) 字段,保存。NPS就会自动为这个域名做SSL终止。
第三步:设置Cloudflare SSL/TLS模式
回到Cloudflare,点 SSL/TLS → 概述,在“加密模式”中选择 完整 (严格)。因为用的是Cloudflare自家Origin证书,验证完全没问题。
其他域名不用管,不要在NPS里给它们上传任何证书。这样它们就会保持HTTPS透传,由内网服务器自己处理SSL解密。
注意:内网HTTP服务本身别再强制跳转HTTPS,否则会无限重定向。按这个配置,指定的那个域名走HTTPS访问,实际转发到HTTP,其他域名一切照旧。
© 一梦风神 · 本文采用 CC BY-NC 4.0 协议共享

发表回复