欢迎光临
我们一直在努力

Nginx 从入门到精通:高性能 Web 服务器与反向代理实战教程

一、Nginx 是什么

Nginx(Engine X)是一款高性能的 HTTP 和反向代理服务器,同时也可作为 负载均衡器、缓存服务器、邮件代理服务器 使用。
它以轻量级、高并发、低内存占用著称,是现代互联网架构中最常见的 Web 服务器之一。

一句话概括:

Nginx = 高性能 Web 服务器 + 反向代理 + 负载均衡 + 缓存。


二、Nginx 的核心特性

功能描述
高并发性能 采用事件驱动模型,可支撑百万级连接
反向代理 转发请求到后端服务器
负载均衡 提高系统可用性与吞吐量
静态资源服务 高效处理静态文件请求
缓存功能 缓存反向代理结果或静态文件
安全与访问控制 IP 限制、请求过滤、WAF 模式
模块化架构 可扩展第三方模块(如 Lua、RTMP)

三、Nginx 安装与启动

1. 安装(Ubuntu)

sudo apt update sudo apt install nginx -y

2. 启动与验证

sudo systemctl start nginx sudo systemctl enable nginx

浏览器访问:

http://localhost

显示 “Welcome to Nginx!” 即表示安装成功。


四、Nginx 目录结构

目录 / 文件作用
/etc/nginx/nginx.conf 主配置文件
/etc/nginx/sites-available/ 站点配置存放目录
/etc/nginx/sites-enabled/ 启用的站点配置
/var/www/html/ 默认网页根目录
/var/log/nginx/access.log 访问日志
/var/log/nginx/error.log 错误日志

五、Nginx 配置文件结构

/etc/nginx/nginx.conf 示例:

user www-data; worker_processes auto; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; include /etc/nginx/sites-enabled/*; }


六、静态网站配置

创建 /etc/nginx/sites-available/myapp:

server { listen 80; server_name myapp.local; root /var/www/myapp; index index.html index.htm; location / { try_files $uri $uri/ =404; } }

启用站点:

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ sudo systemctl reload nginx


七、反向代理配置

反向代理是 Nginx 最强大的功能之一,用于将请求转发至后端服务。

示例:

server { listen 80; server_name api.local; location / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }

请求 http://api.local 会被转发至本地 Flask 或 Node.js 服务。


八、负载均衡配置

多台后端服务器时,可使用 upstream 实现负载均衡。

upstream backend { server 192.168.1.10:8080; server 192.168.1.11:8080; server 192.168.1.12:8080; } server { listen 80; location / { proxy_pass http://backend; } }

负载均衡策略
策略说明
round-robin 默认轮询
ip_hash 根据客户端 IP 分配
least_conn 分配给连接最少的服务器
weight 按权重分配流量

示例:

upstream backend { server 192.168.1.10 weight=3; server 192.168.1.11 weight=1; }

参考案例:www.oicsi.cn


九、动静分离配置

server { listen 80; server_name site.local; location /static/ { root /var/www/html; } location / { proxy_pass http://127.0.0.1:8080; } }

静态文件由 Nginx 直接返回,动态请求交给后端处理。


十、Gzip 压缩

gzip on; gzip_min_length 1k; gzip_comp_level 5; gzip_types text/plain text/css application/javascript application/json;

Gzip 可大幅减少传输内容大小,提高响应速度。


十一、缓存配置

浏览器缓存

location ~* \\.(jpg|png|gif|css|js)$ { expires 30d; add_header Cache-Control "public"; }

反向代理缓存

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mycache:10m max_size=1g; server { location / { proxy_cache mycache; proxy_pass http://backend; } }


十二、访问控制

允许 / 拒绝访问:

location /admin { allow 192.168.1.0/24; deny all; }

限制请求速率:

limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; location /api/ { limit_req zone=one burst=20; }


十三、Rewrite 与重定向

永久重定向

server { listen 80; server_name old.example.com; return 301 http://new.example.com$request_uri; }

URL 重写

location /blog { rewrite ^/blog/(.*)$ /articles/$1 last; }


十四、HTTPS 配置

生成自签名证书:

sudo openssl req -new -x509 -days 365 -nodes -out /etc/nginx/nginx.crt -keyout /etc/nginx/nginx.key

配置:

server { listen 443 ssl; ssl_certificate /etc/nginx/nginx.crt; ssl_certificate_key /etc/nginx/nginx.key; server_name secure.local; location / { root /var/www/html; index index.html; } }


十五、反向代理 WebSocket

location /ws/ { proxy_pass http://127.0.0.1:9000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; }

用于实时通讯、聊天应用、监控系统等。


十六、日志与调试

查看访问日志:

sudo tail -f /var/log/nginx/access.log

查看错误日志:

sudo tail -f /var/log/nginx/error.log

调试配置语法:

sudo nginx -t

重新加载配置:

sudo systemctl reload nginx


十七、性能优化

  • 启用 worker_processes auto 自动匹配 CPU 核心

  • 开启连接复用与长连接

  • 合理配置 keepalive_timeout(建议 30–65 秒)

  • 使用 Gzip + 缓存 + HTTP/2

  • 静态文件独立托管

  • 开启 epoll 模式(Linux)

  • 限制日志写入量以减轻 IO 压力


  • 十八、反向代理安全加固

    • 隐藏版本号:

      server_tokens off;

    • 禁止访问敏感路径:

      location ~ /\\.git { deny all; }

    • 启用 HTTPS 强制跳转:

      return 301 https://$host$request_uri;

    • 启用防盗链:

      valid_referers none blocked *.yourdomain.com; if ($invalid_referer) { return 403; }


    十九、Nginx + Docker 部署

    Dockerfile:

    FROM nginx:latest COPY ./conf.d /etc/nginx/conf.d COPY ./html /usr/share/nginx/html

    docker-compose.yml:

    version: "3.8" services: nginx: build: . ports: – "80:80" volumes: – ./conf.d:/etc/nginx/conf.d – ./html:/usr/share/nginx/html

    运行:

    docker-compose up -d


    二十、企业级实战场景

    场景实践方案
    负载均衡网关 Nginx + upstream 实现流量分发
    微服务反向代理 各服务通过子路径映射
    静态资源加速 Nginx 处理图片、CSS、JS 文件
    API 网关 结合 JWT 验证、限流、日志收集
    HTTPS 全站加密 配合证书自动更新工具(如 Certbot)
    容器化集群 Nginx + Docker + Compose 自动部署
    监控与告警 结合 Prometheus + Grafana 可视化监控
    赞(0)
    未经允许不得转载:171主机测评 » Nginx 从入门到精通:高性能 Web 服务器与反向代理实战教程
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址