请教大佬们关于 NGINX 内网反向代理的疑问。

177 天前
 yeohreet
描述:家里 ROS 主机拨号并做网关,地址 192.168.1.1 ,EXSI 虚拟机上跑了一个 Debian ( 192.168.1.5 ),在 Debian 主机上安装了 NGINX ,并使用 ACME.SH 申请了证书。买了一个域名(例如:xxx.com ),在域名申请了泛域名解析:*.xxx.com ,在 nginx 的 CONFIG 文件设置了反代,例如:a.xxx.com 可以访问内网服务 192.168.1.8 。因为家里公网 IP 没有 443 端口,在 ROS 上设置了转发:9443 到 192.168.1.5 的 443.

问题:访问 a.xxx.com:9443,可以正常访问内网的 192.168.1.8 服务(因为 NGINX 的 CONG 文件已经设置了反向代理),但是为什么访问 b.xx.com:9443 等等,任何的泛解析域名都是同样的访问 192.168.1.8 ,CONG 文件已经做了精准匹配域名了,按我理解,除了 a.xxx.com:9443 可以访问外,其他泛域名应该不能访问才对。实在不想在阿里的域名管理平台每一个服务都设置 A 解析,想在内网的 NGINX 上实现。

百思不得其解,还望各位大佬帮忙指点。
1888 次点击
所在节点    程序员
12 条回复
nitmali
177 天前
default_server
nitmali
177 天前
ccloving
177 天前
家宽封了 80 和 443 也能用 ACME 正常获取证书吗?我一直都是失败的。
yinmin
177 天前
#1 正解。 因为 nginx 有 1 个默认网站概念,即使 servername 不匹配也会用这个默认网站配置
yinmin
177 天前
@ccloving #2 amce 用 dns 认证模式
ccloving
177 天前
@yinmin 谢,我试试
anjing01
176 天前
#1 正确/配置下 80/443 的 default_server(80 端口示例)
server {
listen 80 default_server;
server_name _;

location / {
return 403;
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
yeohreet
176 天前
@anjing01 @nitmali @yinmin 谢谢各位大佬指点,问题已经解决,感谢!
yeohreet
176 天前
@ccloving #3 可以的,家里所有服务都是用的 ACME.SH 自动更新和部署。
lovelylain
176 天前
@ccloving acme.sh 更新证书原理是通过 dns 记录证明你拥有这个域名,跟你网站是不是默认端口部署在当前 ip 没有关系
bli22ard
176 天前
家里玩,caddy 不比 nginx 好用?自带 acme 和主流 dns 服务商的集成,配置 token 就可以实现基于 dns 验证的 https 证书签发
yeohreet
176 天前
@bli22ard #11 主要是玩过了,没有啥可以折腾了,开始自建 liunx 玩服务,顺带学习

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

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

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

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

© 2021 V2EX