以下是根据你提供的内容整理的常用配置文档,可直接作为日常参考。
markdown
# Web 部署常用配置速查
## 一、Nginx 配置
### 1. 接口反向代理(带 CORS)
将以 `/api/` 开头的请求转发到后端服务 `http://127.0.0.1:8080/`,并处理跨域。
```nginx
location /api/ {
# 向后端传递客户端信息
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 跨域设置
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PATCH, DELETE, PUT, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' '*' always;
# 预检请求直接返回 204
if ($request_method = 'OPTIONS') {
return 204;
}
proxy_pass http://127.0.0.1:8080/; # 末尾的 / 会去掉 /api 前缀
}注意:生产环境应将
Access-Control-Allow-Origin改为具体域名,且不能与Credentials:true同时使用通配符*。
2. 静态文件服务(alias 方式)
将 /static/ 开头的请求映射到指定目录下的同名文件,并设置长期缓存。
nginx
location /static/ {
alias /www/sites/47.109.150.208/index/static/; # 必须保留末尾 /
expires 30d;
add_header Cache-Control "public";
# gzip 压缩(可选)
gzip on;
gzip_types text/plain application/javascript text/css application/json;
gzip_min_length 256;
}3. SPA 单页应用回退
对于非接口和非静态资源的请求,全部回退到 index.html,由前端路由接管。
nginx
location / {
try_files $uri $uri/ /index.html;
}提醒:该
location /必须写在最后,且确保index.html存在于root指定的目录中。
4. 完整 Server 块示例
nginx
server {
listen 80;
server_name your-domain.com;
root /www/sites/your-project/dist;
# 接口代理
location /api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PATCH, DELETE, PUT, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' '*' always;
if ($request_method = 'OPTIONS') {
return 204;
}
proxy_pass http://127.0.0.1:8080/;
}
# 静态资源
location /static/ {
alias /www/sites/your-project/dist/static/;
expires 30d;
add_header Cache-Control "public";
}
# SPA 回退
location / {
try_files $uri $uri/ /index.html;
}
}二、MySQL 8 用户与权限
创建用户并授权
sql
-- 创建用户(限制连接来源 IP 网段)
CREATE USER 'appadmin'@'172.19.0.%' IDENTIFIED BY 'YourStrongPassword123!';
-- 授予指定数据库的全部权限
GRANT ALL PRIVILEGES ON healthy_congee.* TO 'appadmin'@'172.19.0.%';
-- 刷新权限(通常不需要,但无妨)
FLUSH PRIVILEGES;常见补充操作
指定旧版认证插件(兼容老客户端):
sqlCREATE USER 'appadmin'@'172.19.0.%' IDENTIFIED WITH mysql_native_password BY 'password';最小权限示例(仅增删改查):
sqlGRANT SELECT, INSERT, UPDATE, DELETE ON healthy_congee.* TO 'appadmin'@'172.19.0.%';修改密码:
sqlALTER USER 'appadmin'@'172.19.0.%' IDENTIFIED BY 'NewPassword456!';删除用户:
sqlDROP USER 'appadmin'@'172.19.0.%';
三、建议与备忘
- HTTPS:生产环境务必配置 SSL,可使用
certbot+ Let's Encrypt 免费证书。 - 接口安全:API 仅允许必要方法(如 GET、POST),在 Nginx 中可用
limit_except或后端控制。 - 日志:为每个
location单独配置访问日志,方便排查问题。 - MySQL 连接:应用使用有限权限用户,避免
root直连;密码配置在环境变量中。
此文档提炼了你提供的核心配置,去除了冗余分析,补充了常见操作和注意事项,方便日常复制使用。