GLM-OCR部署教程:Nginx反向代理配置,支持域名访问与基础认证(Basic Auth)
GLM-OCR部署教程:Nginx反向代理配置,支持域名访问与基础认证(Basic Auth)
1. 项目概述与环境准备
GLM-OCR是一个基于GLM-V编码器-解码器架构构建的多模态OCR模型,专门为复杂文档理解而设计。它集成了在大规模图文数据上预训练的CogViT视觉编码器、轻量级跨模态连接器以及GLM-0.5B语言解码器,支持文本识别、表格识别和公式识别等多种功能。
核心特性:
- 模型大小:2.5GB
- 服务端口:7860
- 默认访问地址:http://localhost:7860
- 支持设备:CUDA/CPU
环境要求:
- Conda环境:py310
- Python:3.10.19
- PyTorch:2.9.1
- Transformers:5.0.1.dev0
2. 基础服务部署
2.1 启动GLM-OCR服务
首先进入项目目录并启动基础服务:
# 进入项目目录
cd /root/GLM-OCR
# 启动服务(使用绝对路径的conda环境)
./start_vllm.sh
首次启动需要加载模型,大约需要1-2分钟时间。启动成功后,服务将在本地7860端口运行。
2.2 验证服务状态
通过以下命令检查服务是否正常运行:
# 检查端口占用情况
netstat -tlnp | grep 7860
# 查看服务日志
tail -f /root/GLM-OCR/logs/glm_ocr_*.log
如果服务启动失败,常见问题及解决方法:
# 端口被占用处理
lsof -i :7860 # 查看占用进程
kill <PID> # 停止进程
# 显存不足处理
nvidia-smi # 查看GPU状态
pkill -f serve_gradio.py # 停止服务释放显存
3. Nginx反向代理配置
3.1 安装Nginx
在Ubuntu系统上安装Nginx:
sudo apt update
sudo apt install nginx
启动Nginx服务并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
3.2 配置反向代理
创建Nginx配置文件:
sudo nano /etc/nginx/sites-available/glm-ocr
添加以下配置内容:
server {
listen 80;
server_name your-domain.com; # 替换为你的域名
# 反向代理配置
location / {
proxy_pass http://localhost:7860;
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支持(如果Gradio使用)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 静态文件缓存配置
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
启用配置文件并测试:
# 创建符号链接
sudo ln -s /etc/nginx/sites-available/glm-ocr /etc/nginx/sites-enabled/
# 测试配置语法
sudo nginx -t
# 重新加载Nginx
sudo systemctl reload nginx
3.3 域名解析配置
在域名服务商处添加A记录解析:
- 记录类型:A
- 主机记录:@ 或你想要的子域名(如ocr)
- 记录值:你的服务器IP地址
等待DNS解析生效(通常需要几分钟到几小时)。
4. 基础认证配置
4.1 创建密码文件
使用htpasswd工具创建认证文件:
# 安装apache2-utils(如果尚未安装)
sudo apt install apache2-utils
# 创建密码文件
sudo htpasswd -c /etc/nginx/.htpasswd username
系统会提示输入密码,完成后会生成加密的密码文件。
4.2 配置基础认证
修改Nginx配置文件,添加认证配置:
server {
listen 80;
server_name your-domain.com;
# 基础认证配置
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://localhost:7860;
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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
4.3 多用户配置
如果需要添加多个用户:
# 添加新用户(不使用-c参数,避免覆盖原有文件)
sudo htpasswd /etc/nginx/.htpasswd another_username
查看现有用户:
cat /etc/nginx/.htpasswd
5. SSL证书配置(可选但推荐)
5.1 安装Certbot
使用Let's Encrypt获取免费SSL证书:
# 安装Certbot
sudo apt install certbot python3-certbot-nginx
# 获取SSL证书
sudo certbot --nginx -d your-domain.com
按照提示操作,Certbot会自动配置SSL并更新Nginx配置。
5.2 强制HTTPS重定向
修改Nginx配置,强制使用HTTPS:
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
# 其他配置保持不变...
}
6. 完整配置示例
以下是完整的Nginx配置示例:
# HTTP重定向到HTTPS
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}
# HTTPS服务器配置
server {
listen 443 ssl http2;
server_name your-domain.com;
# SSL证书配置
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
# SSL优化配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# 基础认证
auth_basic "GLM-OCR Access";
auth_basic_user_file /etc/nginx/.htpasswd;
# 反向代理配置
location / {
proxy_pass http://localhost:7860;
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;
# 超时设置
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
# WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
proxy_pass http://localhost:7860;
expires 1y;
add_header Cache-Control "public, immutable";
}
# 健康检查端点
location /health {
access_log off;
proxy_pass http://localhost:7860;
proxy_set_header Host $host;
}
}
7. 测试与验证
7.1 测试Nginx配置
# 检查配置语法
sudo nginx -t
# 重新加载配置
sudo systemctl reload nginx
# 查看Nginx状态
sudo systemctl status nginx
7.2 测试域名访问
在浏览器中访问配置的域名,应该看到认证弹窗:
- 输入之前设置的用户名和密码
- 成功登录后应该看到GLM-OCR的Web界面
- 测试各项功能是否正常工作
7.3 API调用测试
使用配置的域名进行API调用:
from gradio_client import Client
import requests
# 使用基础认证的API调用
client = Client("https://your-domain.com")
# 或者直接使用requests库
response = requests.get(
"https://your-domain.com",
auth=('username', 'password')
)
print(response.status_code)
8. 故障排除与优化
8.1 常见问题解决
认证失败:
- 检查密码文件权限:
sudo chmod 644 /etc/nginx/.htpasswd - 确认用户名密码正确
502 Bad Gateway:
- 检查GLM-OCR服务是否运行:
ps aux | grep gradio - 查看Nginx错误日志:
sudo tail -f /var/log/nginx/error.log
连接超时:
- 增加Nginx超时设置
- 检查防火墙设置
8.2 性能优化建议
# 在http块中添加以下配置
http {
# 连接池配置
upstream glm_ocr {
server localhost:7860;
keepalive 32;
}
# 在其他server配置中使用
location / {
proxy_pass http://glm_ocr;
# 其他配置...
}
}
8.3 安全加固
# 隐藏服务器版本信息
server_tokens off;
# 防止点击劫持
add_header X-Frame-Options DENY;
# XSS保护
add_header X-XSS-Protection "1; mode=block";
# 防止MIME类型混淆
add_header X-Content-Type-Options nosniff;
9. 总结
通过本教程,你已经成功配置了Nginx反向代理,使GLM-OCR服务支持域名访问和基础认证。这种配置方式不仅提高了服务的安全性,还使得服务更容易管理和访问。
主要收获:
- 学会了如何配置Nginx反向代理
- 掌握了基础认证的设置方法
- 了解了SSL证书的配置流程
- 获得了服务优化和安全加固的知识
现在你的GLM-OCR服务已经可以通过域名安全访问,并且只有授权用户才能使用。这种部署方式特别适合企业内部使用或需要限制访问的场景。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐

所有评论(0)