一个高性能的HTTP和反向代理服务器:Nginx
目录
■核心特性
■安装和配置Nginx
1 安装Nginx
2 基本配置
3 常用管理命令
4 基本配置文件结构
5 针对AI模型服务的反向代理配置
6 SSL/HTTPS配置(可选)
7 Orin:性能优化配置
8 监控和日志
■容器化部署Nginx
1 使用官方Nginx镜像
2 运行Nginx容器
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。它以高并发、低内存占用和高稳定性著称。
■核心特性
特性 | 说明 |
反向代理 | 接收客户端请求,转发到后端服务器 |
负载均衡 | 在多台服务器间分配请求负载 |
静态文件服务 | 高效处理HTML、CSS、JS、图片等静态资源 |
SSL/TLS终端 | 处理HTTPS加密解密 |
缓存 | 缓存响应内容,减轻后端压力 |
高并发 | 事件驱动架构,支持数万并发连接 |
■安装和配置Nginx
Nginx在Orin平台上的使用与标准Linux系统基本相同,但需要注意Orin平台的特点:ARM64架构 ;集成GPU和CPU ;适用于边缘计算和AI应用 ;功耗相对较低 ;适合部署轻量级服务.
1 安装Nginx
# 更新包列表sudo apt update# 安装Nginxsudo apt install nginx
# 检查安装状态nginx -vsystemctl status nginx
2 基本配置
启动和管理Nginx服务
# 启动Nginxsudo systemctl start nginx
# 设置开机自启sudo systemctl enable nginx
# 检查状态sudo systemctl status nginx
# 重启Nginxsudo systemctl restart nginx
# 重新加载配置(不中断服务)sudo systemctl reload nginx
3 常用管理命令
# 测试配置文件语法sudo nginx -t# 重新加载配置(不重启服务)sudo nginx -s reload# 优雅停止服务sudo nginx -s quit# 强制停止服务sudo nginx -s stop# 查看Nginx进程ps aux | grep nginx# 查看监听端口sudo netstat -tlnp | grep nginx
4 基本配置文件结构
# 主配置文件/etc/nginx/nginx.conf# 站点配置文件目录/etc/nginx/sites-available/# 启用站点的符号链接/etc/nginx/sites-enabled/# 日志文件/var/log/nginx/access.log/var/log/nginx/error.log
5 针对AI模型服务的反向代理配置
配置Qwen2.5VL-7B服务代理示例
sudo tee /etc/nginx/sites-available/ai-model << 'EOF'
upstream ai_backend {server 127.0.0.1:11434;keepalive 32;
}server {listen 80;server_name localhost;# 增加客户端请求大小限制(适用于大模型)client_max_body_size 100M;# 增加超时时间(AI推理可能需要较长时间)proxy_connect_timeout 300s;proxy_send_timeout 300s;proxy_read_timeout 300s;# 静态文件服务location / {root /var/www/html;index index.html;}# AI模型API代理location /api/ {proxy_pass http://ai_backend/;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;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_cache_bypass $http_upgrade;}# 健康检查端点location /health {access_log off;return 200 "healthy\n";add_header Content-Type text/plain;}
}
EOF# 启用配置
sudo ln -sf /etc/nginx/sites-available/ai-model /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置
sudo systemctl reload nginx
6 SSL/HTTPS配置(可选)
生成自签名证书(测试用)
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout /etc/ssl/private/nginx-selfsigned.key \-out /etc/ssl/certs/nginx-selfsigned.crt
命令参数解释
-x509 : 生成自签名证书
-nodes : 不加密私钥文件
-days 365 : 证书有效期365天
-newkey rsa:2048 : 生成2048位RSA密钥
-keyout : 指定私钥文件输出路径
-out : 指定证书文件输出路径
这两个文件是SSL/TLS加密通信所需的核心文件。
私钥文件 (/etc/ssl/private/nginx-selfsigned.key)
包含服务器的私钥(Private Key),用于解密客户端用公钥加密的数据,必须严格保密,不能泄露;只在服务器端保存,永不发送给客户端。
证书文件 (/etc/ssl/certs/nginx-selfsigned.crt)
包含服务器的公钥证书(Public Certificate),发送给客户端用于加密通信数据 ,包含服务器身份信息和公钥, 可以公开分发。
证书工作机制
SSL/TLS握手过程
1客户端连接到HTTPS服务器
2服务器发送证书文件(.crt)给客户端
3客户端验证证书有效性
4客户端用证书中的公钥加密会话密钥
5 服务器用私钥文件(.key)解密会话密钥
6双方用会话密钥进行对称加密通信
HTTPS配置
sudo tee /etc/nginx/sites-available/https-ai << 'EOF'
server {listen 443 ssl;server_name localhost;ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;# AI模型服务配置location / {proxy_pass http://127.0.0.1:11434;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;}
}# HTTP重定向到HTTPS
server {listen 80;server_name localhost;return 301 https://$server_name$request_uri;
}
EOFsudo ln -sf /etc/nginx/sites-available/https-ai /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
7 Orin:性能优化配置
优化Nginx配置
sudo tee /etc/nginx/nginx.conf << 'EOF'
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;events {worker_connections 1024;use epoll;multi_accept on;
}http {sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;keepalive_requests 1000;types_hash_max_size 2048;# 基本优化client_max_body_size 100M;client_body_timeout 120s;client_header_timeout 120s;send_timeout 120s;# MIME类型include /etc/nginx/mime.types;default_type application/octet-stream;# 日志格式log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;error_log /var/log/nginx/error.log;# Gzip压缩gzip on;gzip_vary on;gzip_min_length 1024;gzip_types text/plain text/css application/json application/javascript text/xml application/xml;# 包含站点配置include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/*;
}
EOF
8 监控和日志
# 实时查看访问日志tail -f /var/log/nginx/access.log# 查看错误日志tail -f /var/log/nginx/error.log
# 统计访问量awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
可以在Orin平台上成功部署Nginx作为Web服务器和反向代理,为AI模型服务提供稳定、高效的访问入口。
■容器化部署Nginx
1 使用官方Nginx镜像
sudo docker pull nginx:latest
2 运行Nginx容器
# 创建本地配置目录mkdir -p ~/nginx-config/{conf.d,certs,html}
# 运行容器并挂载配置sudo docker run -d \ --name nginx-container \ -p 80:80 \ -p 443:443 \ -v ~/nginx-config/conf.d:/etc/nginx/conf.d \ -v ~/nginx-config/certs:/etc/nginx/certs \ -v ~/nginx-config/html:/usr/share/nginx/html \ nginx:latest
# 或者docker run -d --privileged=true --restart=always --network host -v /home/test/nginx:/etc/nginx/conf.d -v /var/www:/var/www --name nginx nginx:latest
至此,本文分享的内容就结束了。