Nginx 服务器配置
本指南介绍如何在 Nginx 服务器上部署 H5 应用,并配置微信小程序域名校验文件的访问。
云平台用户提示
如果您使用百度云、阿里云、腾讯云、华为云等云平台,HTTPS 证书通常已通过平台控制台自动配置。本文档主要关注 H5 应用部署 和 微信校验文件配置。
前提条件
- 已安装 Nginx(建议版本 1.18+)
- 域名已配置 HTTPS 证书(云平台通常自动处理)
- 已下载微信域名校验文件(如
a1b2c3d4e5f6.txt) - H5 应用已构建完成
校验文件放置方案
根据您的需求,可以选择以下两种方案:
方案一:放到 H5 项目根目录(推荐)
将校验文件直接放在 H5 应用的根目录中,与 index.html 同级。
目录结构:
/var/www/h5/
├── a1b2c3d4e5f6.txt ← 校验文件(微信生成的随机文件名)
├── index.html
├── assets/
│ ├── js/
│ ├── css/
│ └── images/
└── ...
优点:
- 配置简单,无需额外 location 规则
- 适合大多数场景
缺点:
- 校验文件与业务代码混在一起
方案二:单独目录存放
将校验文件放在专门的目录中,与 H5 应用分离。
目录结构:
/var/www/weixin-verify/
└── a1b2c3d4e5f6.txt ← 校验文件(微信生成的随机文件名)
/var/www/h5/
├── index.html
├── assets/
└── ...
优点:
- 结构清晰,便于管理多个域名的校验文件
- 校验文件与业务代码分离
缺点:
- 需要配置额外的 Nginx location 规则
建议
如果您的 H5 项目本身没有其他 .txt 文件,推荐使用方案一,配置更简单。
Nginx 配置
方案一配置(校验文件在项目根目录)
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name h5.example.com;
# SSL 证书配置(通常由云平台自动管理)
# 如需手动配置,取消注释以下两行:
# ssl_certificate /path/to/your/fullchain.pem;
# ssl_certificate_key /path/to/your/privkey.pem;
# H5 页面和校验文件都在同一根目录
location / {
root /var/www/h5;
index index.html;
try_files $uri $uri/ /index.html;
}
# 日志配置
access_log /var/log/nginx/h5_access.log;
error_log /var/log/nginx/h5_error.log;
}
# HTTP 自动跳转 HTTPS
server {
listen 80;
listen [::]:80;
server_name h5.example.com;
return 301 https://$server_name$request_uri;
}
方案二配置(校验文件单独存放)
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name h5.example.com;
# SSL 证书配置(通常由云平台自动管理)
# 如需手动配置,取消注释以下两行:
# ssl_certificate /path/to/your/fullchain.pem;
# ssl_certificate_key /path/to/your/privkey.pem;
# 微信校验文件专用配置
# 匹配所有 .txt 文件(微信校验文件名是随机字符串.txt)
location ~ \.txt$ {
root /var/www/weixin-verify;
access_log off; # 校验文件访问无需记录日志
}
# H5 页面配置
location / {
root /var/www/h5;
index index.html;
try_files $uri $uri/ /index.html;
}
# 日志配置
access_log /var/log/nginx/h5_access.log;
error_log /var/log/nginx/h5_error.log;
}
# HTTP 自动跳转 HTTPS
server {
listen 80;
listen [::]:80;
server_name h5.example.com;
return 301 https://$server_name$request_uri;
}
注意
方案二的配置会将所有 .txt 文件请求指向 /var/www/weixin-verify/。如果您的 H5 项目需要其他 .txt 文件,建议使用方案一或调整配置。
配置说明
关键配置项
| 配置项 | 说明 |
|---|---|
server_name | 您的域名,必须与微信后台配置的域名一致 |
listen 443 ssl | HTTPS 端口配置 |
root | 静态文件根目录 |
try_files | URL 重写规则,支持 SPA 路由 |
SSL 证书说明
云平台(如百度云、阿里云、腾讯云)通常在控制台配置 SSL 证书后会自动注入到 Nginx 配置中。
部署步骤
1. 创建目录
# 方案一
sudo mkdir -p /var/www/h5
# 方案二
sudo mkdir -p /var/www/h5
sudo mkdir -p /var/www/weixin-verify
2. 上传文件
# 上传 H5 应用文件到服务器
# 可使用 scp、rsync 或其他工具
# 方案一:将校验文件放到 H5 根目录
sudo cp a1b2c3d4e5f6.txt /var/www/h5/
# 方案二:将校验文件放到单独目录
sudo cp a1b2c3d4e5f6.txt /var/www/weixin-verify/
3. 设置权限
# 设置文件所有者(根据您的 Nginx 配置调整)
sudo chown -R nginx:nginx /var/www/h5
# 或
sudo chown -R www-data:www-data /var/www/h5
# 设置文件权限
sudo find /var/www/h5 -type f -exec chmod 644 {} \;
sudo find /var/www/h5 -type d -exec chmod 755 {} \;
# 确保校验文件可读
sudo chmod 644 /var/www/h5/a1b2c3d4e5f6.txt
# 或(方案二)
sudo chmod 644 /var/www/weixin-verify/a1b2c3d4e5f6.txt
4. 创建 Nginx 配置文件
# 创建配置文件
sudo nano /etc/nginx/sites-available/h5.example.com.conf
# 将上面的配置内容粘贴到文件中
# 保存并退出(Ctrl+X, Y, Enter)
5. 启用配置
# 创建软链接
sudo ln -s /etc/nginx/sites-available/h5.example.com.conf /etc/nginx/sites-enabled/
# 测试配置语法
sudo nginx -t
# 如果测试通过,重新加载 Nginx
sudo systemctl reload nginx
验证配置
验证校验文件可访问
# 使用 curl 测试(替换为实际文件名)
curl https://h5.example.com/a1b2c3d4e5f6.txt
# 查看详细响应
curl -I https://h5.example.com/a1b2c3d4e5f6.txt
# 预期输出:
# HTTP/2 200
# content-type: text/plain
验证 H5 页面可访问
# 测试主页
curl -I https://h5.example.com
# 预期返回 200 状态码
验证 HTTPS 重定向
# 测试 HTTP 是否自动跳转到 HTTPS
curl -I http://h5.example.com
# 预期输出:
# HTTP/1.1 301 Moved Permanently
# Location: https://h5.example.com/
常见问题
404 错误
原因: 文件路径配置错误
解决方案:
# 检查文件是否存在
ls -la /var/www/h5/a1b2c3d4e5f6.txt
# 检查 Nginx 配置中的 root 路径
sudo nginx -T | grep root
403 错误
原因: 文件权限问题
解决方案:
# 检查文件权限
ls -la /var/www/h5/a1b2c3d4e5f6.txt
# 修正权限
sudo chmod 644 /var/www/h5/a1b2c3d4e5f6.txt
sudo chown nginx:nginx /var/www/h5/a1b2c3d4e5f6.txt
500 错误
原因: Nginx 配置错误
解决方案:
# 检查配置语法
sudo nginx -t
# 查看错误日志
sudo tail -f /var/log/nginx/h5_error.log
高级配置
配置多域名
server {
listen 443 ssl http2;
server_name h5.example.com h5-backup.example.com;
# 其他配置...
}
配置反向代理(API 转发)
# 转发 API 请求到后端服务器
location /api {
proxy_pass http://backend-server:8080;
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;
}
相关资源
- 📖 小程序配置指南
- 🔗 Nginx 官方文档