Nginx 配置指南
架构说明
MDMS 的前台和后台是分离的:前台是纯静态文件(由 Nginx 直接提供),后台是 Go HTTP 服务(通过 Nginx 反向代理)。
用户浏览器
↓
Nginx (80/443)
├── /admin/* → 反代到 Go 后台(127.0.0.1:9527)
├── /api/* → 反代到 Go 后台(127.0.0.1:9527)
├── /static/* → 反代到 Go 后台(127.0.0.1:9527)
└── 其他路径 → 静态文件(/www/wwwroot/你的域名/)
基本配置(HTTP)
最简配置,适合本地测试或内网环境:
server {
listen 80;
server_name mdms.example.com;
index index.shtml index.html index.htm;
root /www/wwwroot/mdms.example.com;
# MDMS 后台反代
location /admin {
proxy_pass http://127.0.0.1:9527;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 后台静态资源(CSS/JS/图标)
location /static {
proxy_pass http://127.0.0.1:9527;
}
# API 接口(搜索、健康检查等)
location /api {
proxy_pass http://127.0.0.1:9527;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 错误页
error_page 404 /404.html;
}
完整配置(HTTPS + 宝塔面板)
生产环境推荐配置,包含 SSL、HTTP 强制跳转 HTTPS、安全规则:
server {
listen 80;
listen 443 ssl http2;
server_name mdms.example.com;
index index.shtml index.html index.htm;
root /www/wwwroot/mdms.example.com;
# SSL 证书(宝塔自动申请)
ssl_certificate /www/server/panel/vhost/cert/mdms.example.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/mdms.example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
# HTTP 强制跳转 HTTPS
if ($server_port != 443) {
rewrite ^(/.*)$ https://$host$1 permanent;
}
# ═══ MDMS 反代规则(三条,缺一不可) ═══
# 1. 后台管理界面
location /admin {
proxy_pass http://127.0.0.1:9527;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 2. 后台静态资源
location /static {
proxy_pass http://127.0.0.1:9527;
}
# 3. API 接口
location /api {
proxy_pass http://127.0.0.1:9527;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# ═══ 安全规则 ═══
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn) {
return 404;
}
# ═══ 静态资源缓存 ═══
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 12h;
}
# ═══ 错误页 ═══
error_page 404 /404.html;
access_log /www/wwwlogs/mdms.example.com.log;
error_log /www/wwwlogs/mdms.example.com.error.log;
}
三条反代规则说明
MDMS 需要三条反代规则,缺少任何一条都会导致功能异常:
/admin 反代后台管理界面。如果缺少,访问后台会返回 Nginx 的 404 页面。
/static 反代后台的 CSS、JS、图标等静态资源。如果缺少,后台界面没有样式,显示为纯文本。
/api 反代前台搜索、健康检查等 API 接口。如果缺少,前台搜索不可用,后台健康检查报错(SyntaxError: Unexpected token '<')。
端口选择
MDMS 默认监听 8080 端口。如果端口被占用,可以换用其他端口。常用备选:9527、9090、3000、5000。
启动命令和 systemd 配置中的端口必须和 Nginx 反代的端口一致。例如使用 9527:
启动命令: ./mdms -mode serve -port 9527
Nginx 反代: proxy_pass http://127.0.0.1:9527
systemd: ExecStart=/opt/mdms/mdms/mdms -mode serve -port 9527
宝塔面板注意事项
如果使用宝塔面板管理 Nginx,注意以下几点:
宝塔创建站点时会自动生成 Nginx 配置,包含 PHP 支持(enable-php-xx.conf)。MDMS 是纯 Go 应用,不需要 PHP,可以删除 include enable-php-xx.conf 这行。
宝塔的 SSL 证书申请功能会自动添加证书验证目录配置(.well-known),保留即可,不影响 MDMS。
修改 Nginx 配置后,先测试再重载:nginx -t && nginx -s reload。如果 nginx -t 报错,不要执行 reload,否则可能导致所有站点不可用。
常见问题
后台页面 404
检查 /admin 反代规则是否存在。注意 location /admin 后面不要加斜杠,写成 location /admin/ 会导致 /admin/login 匹配不到。
后台样式丢失(纯文本)
检查 /static 反代规则是否存在。
前台搜索不可用或健康检查报错
检查 /api 反代规则是否存在。这是最容易遗漏的一条。
静态页面 .shtml 返回 404
检查 Nginx 的 index 指令是否包含 index.shtml。默认的 Nginx 配置只有 index.html,需要加上 index.shtml。
修改配置后不生效
确认执行了 nginx -s reload。如果使用宝塔面板,也可以在面板中点击"重载配置"。