二级域名搭配反向代理:内网服务也能轻松访问!
|
admin
2025年12月10日 1:51
本文热度 10
|
在家庭或企业网络环境中,我们经常会遇到这样的问题:
这时,反向代理(Reverse Proxy) 就能派上大用场,当然,这里有一个前提条件就是必须有一个公网 IP,固定与动态的都行。
📌 前面在介绍 DDNS 时曾强烈推荐使用通过 VPN 的方式来访问内网服务,更多信息请参考告别内网穿透!家庭宽带动态公网 IP + DDNS,安全访问家中设备!OpenVPN 部署实用指南,此处我们讨论的是必须对外暴露的服务,别搞混了哦~
什么是反向代理?
简单来说:
- • 正向代理 → 客户端找代理,代理去访问服务器,客户端知道代理服务器是
中间人。 - • 反向代理 → 客户端访问代理,代理再去找真正的后端服务集群,客户端认为代理就是目标服务器
反向代理服务器就像“中转站”,它根据域名或路径的不同,把请求转发到不同的后端服务。它有以下特点,也可以说是优点:
为什么要用二级域名?
如果你家或公司只有一个公网 IP,但想同时访问多个服务,就可以通过二级域名来区分:
- •
nas.example.com → 内网 NAS 管理页面 - •
docs.example.com → 内网文档系统 - •
git.example.com → 内部 Git 服务
这样访问时只需记住二级域名,不需要端口号,使用体验和真正的独立公网服务没有差别。
常见反向代理软件
- • Nginx:最常用的 Web 服务器 + 反向代理
配置示例
以 Nginx 为例,假设有以下服务:
- • NAS 管理页面:内网
192.168.1.10:5000 - • Wiki 系统:内网
192.168.1.20:3000 - • 二级域名 nas.example.com → 内网 NAS (192.168.1.10:5000)
- • 二级域名 docs.example.com → 内网 Wiki (192.168.1.20:3000)
- • 使用 Let’s Encrypt 证书(假设已经申请成功,证书存放路径 /etc/letsencrypt/live/...)
Nginx 配置文件示例:
# HTTP 重定向到 HTTPS
server {
listen80;
server_name nas.example.com docs.example.com;
location / {
return301 https://$host$request_uri;
}
}
# HTTPS 配置 - NAS
server {
listen443 ssl http2;
server_name nas.example.com;
# SSL 证书
ssl_certificate /etc/letsencrypt/live/nas.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nas.example.com/privkey.pem;
# 推荐的 SSL 配置(安全性更高)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_cipherson;
ssl_ciphers HIGH:!aNULL:!MD5;
# 反向代理到内网 NAS
location / {
proxy_pass http://192.168.1.10:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# HTTPS 配置 - Wiki
server {
listen443 ssl http2;
server_name docs.example.com;
# SSL 证书
ssl_certificate /etc/letsencrypt/live/docs.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/docs.example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_cipherson;
ssl_ciphers HIGH:!aNULL:!MD5;
# 反向代理到内网 Wiki
location / {
proxy_pass http://192.168.1.20:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
这样配置完成以后,外网访问(DNS 已完成二级域名的配置):
- •
http://nas.example.com → 映射到 NAS 管理页面 - •
http://docs.example.com → 映射到 Wiki 系统
再配合 Let’s Encrypt SSL 证书,就能直接用 https://nas.example.com 安全访问。
群晖 NAS 配置就更简单了,在登录门户的配置菜单中就有反向代理的选项,直接填写相关信息即可完成。
📌 配置 DNS 的时候,如果是固定的公网 IP,二级域名直接对应该 IP 就行,每一个服务对应一条 A 记录。如果是动态公网 IP,新增加的服务通过 CNAME 类型指向原服务即可,不需要调整 DDNS 中的配置。
注意事项
- 1. DNS 设置:确保二级域名都解析到对应的公网 IP。
- 2. 防火墙端口:放行 80/443(如果是其它端口,Nginx 中做对应修改) 端口,否则外部无法访问。
- 3. 证书管理:建议使用自动化工具(如 Certbot、Caddy)来更新证书。
- 4. 安全:尽量加上认证、防爆破措施,避免把敏感服务直接暴露到公网。
📌 非必要的服务还是通过 VPN 来访问更安全一些,二级域名虽然隔离了应用,但也增加了新的漏洞风险。不过真正的风险不在二级域名本身,而在于:
- • 是否把敏感服务暴露到公网(如数据库、管理后台)
二级域名 + 反向代理 本身是常见的运维架构,大型公司都这么用,只要加上 HTTPS + 访问控制 + 日志监控,风险可控。
应用场景
- • 家庭:远程访问 NAS、私有云盘、HomeAssistant
- • 开发者:一台云主机跑多个项目,用不同二级域名区分
反向代理配合二级域名使用,不仅能提升网站的专业性和用户体验,还能增强安全性和扩展性。无论是个人项目还是企业应用,这都是值得掌握的实用技能。
阅读原文:原文链接
该文章在 2025/12/10 18:35:44 编辑过