Nginx如何配置域名验证

在Nginx中间件中配置 SSL 域名验证的 文件控制权验证,核心是确保中间件能正确响应 CA 访问指定验证文件的 HTTP 请求(通常是 http://yourdomain.com/.well-known/pki-validation/<文件名>)。以下是详细配置步骤:


Nginx

  1. 创建验证文件目录
    在 Nginx 的 Web 根目录下创建隐藏目录(若文件包已完整下载可跳过该步骤) .well-known/pki-validation
mkdir -p /var/www/html/.well-known/pki-validation
  1. 放置验证文件
    将下载或复制的验证文件(如 file.txt)放入该目录,并确保内容完全一致(无空格/换行)。
echo "CA提供的文件内容" > /var/www/html/.well-known/pki-validation/file.txt
chown -R nginx:nginx /var/www/html/.well-known  # 确保权限正确
  1. 配置 Nginx 支持 HTTP 访问验证路径
    修改 Nginx 配置文件(通常在 /etc/nginx/nginx.conf/etc/nginx/sites-available/default),确保以下规则生效:
server {
    listen 80;  #验证必须通过 80 端口
    server_name yourdomain.com;  # 你的域名

    # 关键配置:允许访问 .well-known 目录
    location ^~ /.well-known/pki-validation/ {
        root /var/www/html;  # 替换为你的实际 Web 根目录
        default_type text/plain;
        allow all;  # 允许所有 IP 访问
    }

}

注意

  • 验证期间必须保持 80 端口可访问(若有防火墙需临时放行80端口)。
  1. 测试验证文件可访问性
    在浏览器或终端访问验证 URL,检查内容是否正确:
http://yourdomain.com/.well-known/pki-validation/file.txt
# 应返回 txt文件的内容

常见问题解决

  1. 访问返回 404 错误
  • 检查文件路径是否正确(区分大小写)。
  • 确认 root 指令指向的目录包含 .well-known
  • 查看 Nginx 错误日志:tail -f /var/log/nginx/error.log
  1. 访问被重定向到 HTTPS
  • 临时注释 HTTPS 重定向规则(步骤 3 中的 return 301 https://...)。
  • 或为验证路径单独禁用重定向:
location ^~ /.well-known/pki-validation/ {
    # 保持原有配置
}
location / {
    return 301 https://$host$request_uri;  # 其他路径重定向
}
  1. 权限不足导致访问被拒
  • 确保目录权限:
chmod -R 755 /var/www/html/.well-known
chown -R nginx:nginx /var/www/html/.well-known  # 用户/组根据实际修改
  1. 隐藏目录被安全规则拦截
    检查是否有规则禁止访问点开头的路径(如某些安全插件),在配置中显式允许:
location ~ /\. {  # 默认可能拦截所有隐藏路径
    deny all;
}
# 覆盖规则:允许 .well-known
location ^~ /.well-known {
    allow all;
}

自动化推荐:使用 Certbot

若使用 Let’s Encrypt 证书,Certbot 可自动完成所有步骤(包括创建文件、配置 Nginx、续期):

# 安装 Certbot
sudo apt install certbot python3-certbot-nginx  # Ubuntu/Debian

# 自动获取并配置证书(需确保域名已解析到服务器)
sudo certbot --nginx -d yourdomain.com

Certbot 会自动添加临时验证配置,验证后恢复原设置并配置 HTTPS。


总结

关键点操作说明
验证文件路径/.well-known/pki-validation/<文件名>
Nginx 配置位置server 块监听 80 端口,添加 location ^~ /.well-known/pki-validation/
端口要求必须开放 HTTP (80 端口)
测试命令curl http://yourdomain.com/.well-known/pki-validation/file.txt
自动化工具使用 Certbot 可免手动配置(推荐)

滚动至顶部