一个高性能的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

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

相关推荐
MiNG MENS3 小时前
nginx 代理 redis
运维·redis·nginx
珊瑚怪人4 小时前
一个域名问题
nginx
身如柳絮随风扬4 小时前
GET请求能带Body吗?GET与POST的核心区别全解析
http
dxdz6 小时前
一文搞定 Linux Nginx 从安装、启动到 nginx.conf 全配置详解(新手也能看懂)
nginx
遇见火星7 小时前
Nginx 负载均衡配置模板:轮询、权重、IP哈希、最少连接
tcp/ip·nginx·负载均衡
untE EADO9 小时前
Nginx代理到https地址忽略证书验证配置
运维·nginx·https
Gh0st_Lx10 小时前
【6】为什么有了 HTTP/1.1 ,还要 HTTP/2 和 HTTP/3
网络协议·http·php
Treh UNFO11 小时前
nginx的重定向
大数据·数据库·nginx
学编程就要猛11 小时前
JavaEE初阶:网络原理-HTTP(下)
网络·网络协议·http
理人综艺好会11 小时前
nginx了解
运维·nginx