前言
我之前已经在nginx做了配置,浏览器url中访问/将直接访问到我的一个node服务中去,但是检验文件要求放到域名的根目录下(即网站根目录,如/usr/share/nginx/html/),要怎么解决呢?
现在的架构是:
- 用户访问 
https://你的域名/→ Nginx 反向代理到你的 Node.js 服务(比如http://127.0.0.1:3000) - 现在需要上传一个 校验文件KZurowFpA.txt (
注意下载下来的文件名字不能改),用于微信小程序验证你对域名的控制权 - 但问题是:所有 
/路径的请求都被代理到 Node 服务了,Nginx 不会直接返回静态文件 
✅ 核心问题
你想让
https://你的域名/KZurowFpA.txt这个 URL 不经过 Node 服务,而是由 Nginx 直接返回一个本地文件。
✅ 解决方案:在 Nginx 中为校验文件添加特殊 location 规则
你只需要在 Nginx 配置中,添加一个更具体的 location 块 ,优先匹配校验文件的路径,让 Nginx 直接返回它,不走代理。
✅ 步骤一:把校验文件放到某个目录
比如:/usr/share/nginx/html/KZurowFpA.txt
确保权限正确:
            
            
              bash
              
              
            
          
          sudo chown -R www-data:www-data /usr/share/nginx/html/KZurowFpA.txt
sudo chmod -R 644 /usr/share/nginx/html/KZurowFpA.txt
        ✅ 步骤二:修改 Nginx 配置,添加 location 规则
在你的 server 块中,在 location / 之前 添加一个专门匹配校验文件的规则:
            
            
              ini
              
              
            
          
          server {
    listen 80;
    listen 443 ssl;
    server_name 你的域名;
    # SSL 配置...
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/privkey.pem;
    # 精确匹配某个校验文件
    location = /KZurowFpA.txt {
        root /usr/share/nginx/html/verify;
        add_header Content-Type text/plain;
    }
    # 原来的 Node 服务代理(必须放在后面)
    location / {
        proxy_pass http://127.0.0.1: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;
    }
}
        ✅ 关键点说明
| 技巧 | 说明 | 
|---|---|
location = /file.txt | 
精确匹配,优先级最高 | 
location ~ ^/... | 
正则匹配,可以匹配多个文件 | 
把静态文件规则写在 location / 之前 | 
Nginx 会优先匹配更具体的规则 | 
✅ 测试是否成功
- 
重启 Nginx:
sudo nginx -t && sudo systemctl reload nginx
 - 
用浏览器访问:
 
            
            
              arduino
              
              
            
          
          http://你的域名/KZurowFpA.txt
        你应该能看到文件内容,而不是 Node 服务的响应。
✅ 总结
| 场景 | 配置方式 | 
|---|---|
单个校验文件(如 KZurowFpA.txt) | 
location = /KZurowFpA.txt { alias /path; } | 
| 多个校验文件 | `location ~ ^/(file1 | 
| Node 服务代理 | location / { proxy_pass ... }(放最后) | 
✅ 这样配置后,Nginx 会:
- 遇到 
/KZurowFpA.txt→ 直接返回文件 - 遇到其他所有请求 → 转发给 Node 服务
 
完美兼顾 校验文件 和 Node 服务代理!