Nginx 配置指南

2026-04-09 00:00:03 docs MDMS 4026 字

架构说明

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。如果使用宝塔面板,也可以在面板中点击"重载配置"。

来源:快搜原创 / 作者:MDMS / 发布时间:2026-04-09 00:00:03 / Kuaisou MDMS 版权所有
相关话题Nginx部署运维反向代理