首页
/ Umami 项目在Nginx下的部署优化指南

Umami 项目在Nginx下的部署优化指南

2025-05-08 06:31:51作者:董斯意

Umami 是一款现代化的网站分析工具,采用Next.js框架开发。在实际生产环境中,很多开发者选择使用Nginx作为反向代理来部署Umami服务。本文将详细介绍如何正确配置Nginx和systemd服务,确保Umami的各项功能正常运行。

核心配置要点

Nginx反向代理配置

正确的Nginx配置是确保Umami正常运行的关键。根据多位开发者的实践经验,以下是两种经过验证的配置方案:

子域名方案配置

server {
    listen 443 ssl;
    server_name analytics.example.com;
    
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    
    location ~* ^/(script.js|favicon.*|site.webmanifest) {
        root /var/www/umami/public;
    }
    
    location /_next/static/ {
        alias /var/www/umami/.next/static/;
        expires max;
    }
}

路径前缀方案配置

location /stats/_next/static/ {
    alias /opt/umami/.next/static/;
    expires max;
}

location /stats {
    proxy_pass http://127.0.0.1:9898;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Host $host;
}

systemd服务配置

一个可靠的systemd服务配置能够确保Umami服务在服务器重启后自动恢复:

[Unit]
Description=Umami Analytics Service
After=network.target

[Service]
Type=simple
WorkingDirectory=/var/www/umami
ExecStart=/usr/bin/node /var/www/umami/.next/standalone/server.js
Restart=always
User=www-data

[Install]
WantedBy=multi-user.target

常见问题解决方案

  1. 静态资源404错误

    • 确保Nginx配置中正确映射了/_next/static//public目录
    • 检查文件权限,确保Nginx进程有读取权限
  2. API端点不可访问

    • 确认proxy_pass指令末尾包含斜杠(/)
    • 检查BASE_PATH环境变量是否与Nginx配置匹配
  3. 跟踪脚本加载失败

    • 验证script.js文件是否存在于public目录
    • 确保Nginx配置中包含对script.js的特殊处理

最佳实践建议

  1. 环境变量配置: 在使用路径前缀方案时,务必在.env文件中设置BASE_PATH=/your-path,并在构建前确认该值正确。

  2. 权限管理: 避免使用root用户运行Umami服务,建议创建专用用户如www-data或umami。

  3. HTTPS配置: 使用Let's Encrypt等工具为域名配置SSL证书,确保数据传输安全。

  4. 性能优化

    • 为静态资源设置长期缓存
    • 启用HTTP/2或HTTP/3提升加载速度
    • 考虑使用CDN分发静态资源

通过以上配置和优化,Umami可以在生产环境中稳定运行,为用户提供准确的网站分析数据。不同部署场景可能需要微调配置,但核心原则是确保Nginx正确代理请求并妥善处理静态资源。

登录后查看全文
热门项目推荐
相关项目推荐

热门内容推荐

项目优选

收起
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
149
1.95 K
kernelkernel
deepin linux kernel
C
22
6
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
980
395
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
192
274
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
931
555
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
145
190
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Jupyter Notebook
75
66
openHiTLS-examplesopenHiTLS-examples
本仓将为广大高校开发者提供开源实践和创新开发平台,收集和展示openHiTLS示例代码及创新应用,欢迎大家投稿,让全世界看到您的精巧密码实现设计,也让更多人通过您的优秀成果,理解、喜爱上密码技术。
C
65
518
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.11 K
0