一个高性能的HTTP和反向代理服务器:Nginx

目录

■核心特性

■安装和配置Nginx

[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 监控和日志)

■容器化部署Nginx

[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

至此,本文分享的内容就结束了。

相关推荐
艾菜籽3 小时前
网络原理-HTTP补充1
网络·网络协议·http
渡我白衣4 小时前
HTTPS协议原理
网络协议·http·https
IT成长日记7 小时前
【Nginx开荒攻略】静态文件服务深度解析:MIME类型映射与优化实战
linux·运维·服务器·nginx·mime
zz-zjx10 小时前
Web接入层的“铁三角”---防盗链、反向代理,负载均衡(nginx)
前端·nginx·负载均衡
珊瑚礁的猪猪侠10 小时前
Nginx从入门到精通:小白实战教程
运维·nginx
邂逅星河浪漫11 小时前
【DockerFile+Nginx+DockerCompose】前后端分离式项目部署(docker容器化方式)
nginx·docker·centos·部署·docker-compose·dockerfile·容器化部署
天空之外13612 小时前
nginx xxs漏铜修复、nginx 域名配置、nginx https证书配置、Http不安全处理方法
运维·nginx
神秘人X70713 小时前
Nginx 访问控制、用户认证与 HTTPS 配置指南
nginx·https
lhxcc_fly14 小时前
Linux网络--4、应用层协议Http
网络·网络协议·http