温馨提示×

Debian Nginx域名解析设置

小樊
35
2025-12-27 16:33:37
栏目: 云计算

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
  • 新建服务器块配置
    • 文件路径:/etc/nginx/sites-available/example.com
    • 示例内容:
      server {
          listen 80;
          server_name example.com www.example.com;
          root /var/www/example.com;
          index index.html index.htm;
      
          location / {
              try_files $uri $uri/ =404;
          }
      
          error_page 500 502 503 504 /50x.html;
          location = /50x.html {
              root /usr/share/nginx/html;
          }
      }
      
  • 启用站点并测试
    • 启用: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.comhttp://www.example.com
    • 查看 Nginx 错误日志:/var/log/nginx/error.log
  • 常见问题排查
    • 未匹配到正确的 server_name:确保域名与配置完全一致(含 www 与否)。
    • 配置未生效:执行 sudo nginx -t 检查语法,确认已 reloadrestart
    • 端口未放行:检查云厂商安全组与系统防火墙(如 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
    • 在 server 块中添加:
      location ~ \.php$ {
          include snippets/fastcgi-php.conf;
          fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include fastcgi_params;
      }
      
    • 重载 Nginx:sudo systemctl reload nginx

0