Debian 下 Nginx 域名解析与虚拟主机配置
一、整体思路
- 在域名注册商或权威 DNS 处为你的域名添加解析记录,将域名指向服务器公网 IP。
- 在 Debian 上配置 Nginx 服务器块(server block),用 server_name 匹配域名,并指向网站根目录。
- 完成后重载 Nginx,并通过浏览器或命令行验证解析与站点是否生效。
二、DNS 解析记录配置
- 常见记录类型与用途
- A:将域名指向 IPv4 地址(最常用)。
- AAAA:将域名指向 IPv6 地址。
- CNAME:将域名别名指向另一个域名(如将 www 指向根域)。
- 示例记录(在域名管理面板添加)
- 主机记录:@ → 类型:A → 值:203.0.113.10
- 主机记录:www → 类型:CNAME → 值:example.com
- 生效时间
- 受 TTL 影响,通常需等待 数分钟到数小时 全球生效。
- 本地开发或临时测试
- 可编辑 /etc/hosts 添加条目进行解析验证(仅本机生效):
- 示例:203.0.113.10 example.com www.example.com
- 服务器侧 DNS 解析(可选)
- 如需自定义 DNS 服务器,可编辑 /etc/resolv.conf 添加如 nameserver 8.8.8.8 等。
三、Nginx 虚拟主机配置
- 安装 Nginx(如未安装)
- 命令:sudo apt update && sudo apt install nginx
- 创建站点目录与示例首页
- 命令:
- sudo mkdir -p /var/www/example.com
- echo “Hello, World” | sudo tee /var/www/example.com/index.html
- sudo chown -R www-data:www-data /var/www/example.com
- 新建服务器块配置
- 启用站点并测试
- 启用:sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
- 语法检查:sudo nginx -t
- 重载:sudo systemctl reload nginx
- 防火墙放行(如使用 UFW)
- 命令:sudo ufw allow ‘Nginx Full’
四、验证与常见问题
- 解析是否生效
- 命令:dig +short example.com A,应返回你的服务器 IP。
- 命令:ping -c 4 example.com,检查连通性(可能被禁 ping)。
- 站点是否可达
- 浏览器访问:http://example.com 或 http://www.example.com
- 查看 Nginx 错误日志:/var/log/nginx/error.log
- 常见问题排查
- 未匹配到正确的 server_name:确保域名与配置完全一致(含 www 与否)。
- 配置未生效:执行 sudo nginx -t 检查语法,确认已 reload 或 restart。
- 端口未放行:检查云厂商安全组与系统防火墙(如 UFW)是否允许 80/443。
- 权限问题:网站目录属主应为 www-data,权限建议 755/644。
五、可选 HTTPS 与 PHP 支持
- 一键申请 Let’s Encrypt 证书(Nginx 插件)
- 安装:sudo apt install certbot python3-certbot-nginx
- 申请并自动配置:
- 命令:sudo certbot --nginx -d example.com -d www.example.com
- 按提示选择是否重定向 HTTP → HTTPS
- 手动指定 PHP 版本(示例为 PHP 7.4)