目录
[1 安装Nginx](#1 安装Nginx)
[2 基本配置](#2 基本配置)
[3 常用管理命令](#3 常用管理命令)
[4 基本配置文件结构](#4 基本配置文件结构)
[5 针对AI模型服务的反向代理配置](#5 针对AI模型服务的反向代理配置)
[6 SSL/HTTPS配置(可选)](#6 SSL/HTTPS配置(可选))
[7 Orin:性能优化配置](#7 Orin:性能优化配置)
[8 监控和日志](#8 监控和日志)
[1 使用官方Nginx镜像](#1 使用官方Nginx镜像)
[2 运行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
bash
# 更新包列表
sudo apt update
# 安装Nginx
sudo apt install nginx
bash
# 检查安装状态
nginx -v
systemctl status nginx
2 基本配置
启动和管理Nginx服务
bash
# 启动Nginx
sudo systemctl start nginx
bash
# 设置开机自启
sudo systemctl enable nginx
bash
# 检查状态
sudo systemctl status nginx
bash
# 重启Nginx
sudo systemctl restart nginx
bash
# 重新加载配置(不中断服务)
sudo systemctl reload nginx
3 常用管理命令
bash
# 测试配置文件语法
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 基本配置文件结构
bash
# 主配置文件
/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服务代理 示例
bash
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配置(可选)
生成自签名证书(测试用)
bash
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配置
bash
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;
}
EOF
sudo ln -sf /etc/nginx/sites-available/https-ai /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
7 Orin: 性能优化配置
优化Nginx配置
bash
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 监控和日志
bash
# 实时查看访问日志
tail -f /var/log/nginx/access.log
# 查看错误日志
tail -f /var/log/nginx/error.log
bash
# 统计访问量
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
可以在Orin平台上成功部署Nginx作为Web服务器和反向代理,为AI模型服务提供稳定、高效的访问入口。
■容器化部署 Nginx
1 使用官方Nginx镜像
bash
sudo docker pull nginx:latest
2 运行 Nginx 容器
bash
# 创建本地配置目录
mkdir -p ~/nginx-config/{conf.d,certs,html}
bash
# 运行容器并挂载配置
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
bash
# 或者
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
至此,本文分享的内容就结束了。