memos-nginx配置指南
Memos Nginx 反向代理配置指南
配置说明
本配置实现了通过nginx反向代理访问docker中的memos服务,访问地址为:http://ip:80/memos
前提条件
- Docker中已运行memos服务:
docker run -d --name memos -p 25230:5230 -v ~/.memos:/var/opt/memos neosmemo/memos:stable
- Nginx已编译安装完成
配置方式一:直接使用完整配置文件
如果这是全新的nginx安装,可以直接使用完整配置:
- 备份原配置文件:
sudo cp /path/to/nginx/conf/nginx.conf /path/to/nginx/conf/nginx.conf.backup
- 复制配置文件:
sudo cp nginx-memos-full.conf /path/to/nginx/conf/nginx.conf
- 测试配置:
sudo /path/to/nginx/sbin/nginx -t
- 重启nginx:
sudo /path/to/nginx/sbin/nginx -s reload
配置方式二:集成到现有配置
如果nginx已有其他配置,只需添加location块:
- 打开nginx.conf:
sudo vim /path/to/nginx/conf/nginx.conf
- 在
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;
- 适当增加超时时间
- 关闭缓冲可以提高实时性能
验证配置
- 测试nginx配置语法:
sudo /path/to/nginx/sbin/nginx -t
- 重启nginx:
sudo /path/to/nginx/sbin/nginx -s reload
- 检查nginx是否运行:
ps aux | grep nginx
- 检查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: 本配置说明文档
参考文档
- Nginx官方文档:https://nginx.org/en/docs/
- Memos官方文档:https://www.usememos.com/docs

浙公网安备 33010602011771号