Files
chuanqi-qycq-web/nginx.conf.example

110 lines
5.0 KiB
Plaintext
Raw Normal View History

2026-03-16 12:05:55 +08:00
# ═══════════════════════════════════════════════════════════════════
# 清渊传奇 H5 游戏平台 — Nginx 反向代理配置
# 路径:/etc/nginx/conf.d/chuanqi.conf
# ═══════════════════════════════════════════════════════════════════
#
# 架构说明:
# ┌─────────────────────────────────────────┐
# │ 浏览器 │
# │ ↓ HTTPS :443 / HTTP :80 │
# │ Nginx │
# │ ├── /api/* → Node.js :3001 │
# │ ├── /public/* → 静态文件Egret
# │ └── 其他 → Vue dist 目录 │
# └─────────────────────────────────────────┘
#
# ═══════════════════════════════════════════════════════════════════
upstream chuanqi_api {
server 127.0.0.1:3001;
keepalive 32;
}
# ─── HTTP → HTTPS 重定向 ──────────────────────────────────────────
server {
listen 80;
server_name your-domain.com;
# Let's Encrypt / ACME 验证(如使用)
location /.well-known/acme-challenge/ {
root /var/www/html;
}
location / {
return 301 https://$host$request_uri;
}
}
# ─── HTTPS 主配置 ─────────────────────────────────────────────────
server {
listen 443 ssl http2;
server_name your-domain.com;
# ── SSL 证书(替换为实际路径)─────────────────────────────────
ssl_certificate /etc/ssl/certs/your-domain.crt;
ssl_certificate_key /etc/ssl/private/your-domain.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# ── 基础配置 ──────────────────────────────────────────────────
charset utf-8;
client_max_body_size 20m;
2026-03-16 13:10:18 +08:00
# ── 0. 屏蔽 PHP 文件直接访问PHP 已停用,防止残留文件被暴露)──
location ~* \.php$ {
return 404;
}
2026-03-16 12:05:55 +08:00
# ── 1. API 请求 → Node.js ─────────────────────────────────────
location /api/ {
proxy_pass http://chuanqi_api;
proxy_http_version 1.1;
proxy_set_header Connection "";
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;
proxy_read_timeout 30s;
proxy_connect_timeout 10s;
}
# ── 2. Egret 游戏静态资源(大量小文件,强缓存)──────────────
location /public/ {
alias /path/to/chuanqi-qycq-web/public/;
expires 30d;
add_header Cache-Control "public, immutable";
access_log off;
}
# ── 3. 游戏入口 js每次重载─────────────────────────────────
location ~* ^/js/(index|loader|microclient)\.js$ {
root /path/to/chuanqi-qycq-web;
expires -1;
add_header Cache-Control "no-cache, no-store";
}
# ── 4. 其他静态资源(图片/字体等,适度缓存)─────────────────
location ~* \.(png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot)$ {
root /path/to/chuanqi-qycq-web/module/web/dist;
expires 7d;
add_header Cache-Control "public";
access_log off;
}
# ── 5. Vue 前端distHTML5 History 模式)───────────────────
location / {
root /path/to/chuanqi-qycq-web/module/web/dist;
index index.html;
# SPA 路由回退
try_files $uri $uri/ /index.html;
expires -1;
add_header Cache-Control "no-cache";
}
# ── 日志 ──────────────────────────────────────────────────────
access_log /var/log/nginx/chuanqi_access.log;
error_log /var/log/nginx/chuanqi_error.log warn;
}