memos-nginx配置指南

Memos Nginx 反向代理配置指南

配置说明

本配置实现了通过nginx反向代理访问docker中的memos服务,访问地址为:http://ip:80/memos

前提条件

  1. Docker中已运行memos服务:
docker run -d --name memos -p 25230:5230 -v ~/.memos:/var/opt/memos neosmemo/memos:stable
  1. Nginx已编译安装完成

配置方式一:直接使用完整配置文件

如果这是全新的nginx安装,可以直接使用完整配置:

  1. 备份原配置文件:
sudo cp /path/to/nginx/conf/nginx.conf /path/to/nginx/conf/nginx.conf.backup
  1. 复制配置文件:
sudo cp nginx-memos-full.conf /path/to/nginx/conf/nginx.conf
  1. 测试配置:
sudo /path/to/nginx/sbin/nginx -t
  1. 重启nginx:
sudo /path/to/nginx/sbin/nginx -s reload

配置方式二:集成到现有配置

如果nginx已有其他配置,只需添加location块:

  1. 打开nginx.conf:
sudo vim /path/to/nginx/conf/nginx.conf
  1. http块中的server块内添加以下配置:
location /memos/ {
    # 反向代理到memos服务
    proxy_pass http://127.0.0.1:25230/;
    
    # 设置代理头信息
    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;
    
    # WebSocket支持
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    
    # 超时设置
    proxy_connect_timeout 60s;
    proxy_send_timeout 60s;
    proxy_read_timeout 60s;
    
    # 缓冲设置
    proxy_buffering off;
    proxy_request_buffering off;
}

关键配置说明

1. 路径重写(重要)

proxy_pass http://127.0.0.1:25230/;
  • 注意proxy_pass末尾的斜杠/非常重要
  • 它会将请求路径从/memos/重写为/,转发给后端memos服务
  • 例如:http://ip/memos/api/v1/...http://127.0.0.1:25230/api/v1/...

2. 代理头信息

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;
  • 传递真实的客户端IP和协议信息
  • 对日志记录和某些应用功能很重要

3. WebSocket支持

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
  • memos可能使用WebSocket进行实时更新
  • 这确保WebSocket连接能正确转发

4. 超时和缓冲设置

proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
proxy_buffering off;
proxy_request_buffering off;
  • 适当增加超时时间
  • 关闭缓冲可以提高实时性能

验证配置

  1. 测试nginx配置语法:
sudo /path/to/nginx/sbin/nginx -t
  1. 重启nginx:
sudo /path/to/nginx/sbin/nginx -s reload
  1. 检查nginx是否运行:
ps aux | grep nginx
  1. 检查nginx监听端口:
netstat -tuln | grep :80

访问测试

在浏览器中访问:http://你的服务器IP/memos

应该能看到memos的登录界面。

常见问题排查

1. 访问显示404或502错误

检查memos容器是否正常运行:

docker ps | grep memos
docker logs memos

2. 静态资源加载失败

检查nginx错误日志:

tail -f /var/log/nginx/error.log

3. WebSocket连接失败

确保配置中包含WebSocket相关头信息。

4. 路径问题

如果某些资源加载失败,可能需要检查memos的base_url配置。

进阶配置

HTTPS支持

如果需要使用HTTPS,需要添加SSL证书配置:

server {
    listen 443 ssl http2;
    server_name your-domain.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    # ... 其他配置

    location /memos/ {
        proxy_pass http://127.0.0.1:25230/;
        # ... 其他代理配置
    }
}

访问控制

添加IP白名单或基本认证:

location /memos/ {
    # IP白名单
    allow 192.168.1.0/24;
    allow 10.0.0.0/8;
    deny all;
    
    proxy_pass http://127.0.0.1:25230/;
    # ... 其他代理配置
}

限流配置

防止暴力破解:

http {
    limit_req_zone $binary_remote_addr zone=memos:10m rate=10r/s;
    
    server {
        location /memos/ {
            limit_req zone=memos burst=20 nodelay;
            proxy_pass http://127.0.0.1:25230/;
        }
    }
}

文件说明

  • memos-nginx.conf: 仅包含memos的location配置,适合集成到现有nginx配置
  • nginx-memos-full.conf: 完整的nginx配置文件,适合全新安装使用
  • memos-nginx配置指南.md: 本配置说明文档

参考文档

posted @ 2026-01-22 11:25  长江~之星  阅读(74)  评论(0)    收藏  举报