​​Nginx 在 Ubuntu 上的完整指南:安装、配置与部署​​

举报
William 发表于 2025/07/18 09:23:28 2025/07/18
【摘要】 ​​​1. 引言​​Nginx(发音为 "Engine-X")是一款高性能的开源 Web 服务器、反向代理服务器、负载均衡器和 HTTP 缓存工具。它以其高并发、低内存占用和稳定性著称,广泛应用于互联网基础设施中。本指南将详细介绍如何在 Ubuntu 系统上安装、卸载、配置 Nginx,并深入探讨其核心原理和应用场景。​​2. 技术背景​​​​2.1 Nginx 的起源与发展​​由俄罗斯开发...

​1. 引言​

Nginx(发音为 "Engine-X")是一款高性能的开源 Web 服务器、反向代理服务器、负载均衡器和 HTTP 缓存工具。它以其高并发、低内存占用和稳定性著称,广泛应用于互联网基础设施中。本指南将详细介绍如何在 Ubuntu 系统上安装、卸载、配置 Nginx,并深入探讨其核心原理和应用场景。


​2. 技术背景​

​2.1 Nginx 的起源与发展​

  • 由俄罗斯开发者 Igor Sysoev 于 2004 年发布,旨在解决 C10K 问题(同时处理 10,000 个并发连接)。
  • 采用事件驱动架构,相比传统多进程/多线程模型(如 Apache),资源消耗更低,性能更高。

​2.2 Nginx 的核心优势​

  • ​高并发​​:支持数万并发连接,适合高流量网站。
  • ​低内存占用​​:每个连接仅需少量内存。
  • ​反向代理与负载均衡​​:可轻松实现流量分发。
  • ​静态内容高效服务​​:静态文件(如 HTML、CSS、图片)服务性能优异。
  • ​模块化设计​​:支持动态模块加载,扩展性强。

​3. 应用使用场景​

​3.1 Web 服务器​

直接托管静态网站或动态网站(如配合 PHP-FPM、Node.js)。

​3.2 反向代理​

将客户端请求转发到后端服务器(如 Tomcat、Gunicorn),隐藏真实服务器信息。

​3.3 负载均衡​

在多台后端服务器间分配流量,提高系统可用性和扩展性。

​3.4 HTTP 缓存​

缓存静态内容或动态响应,减少后端负载,加速访问。

​3.5 SSL/TLS 终止​

集中管理 HTTPS 加密,减轻后端服务器的计算压力。


​4. 不同场景下的详细代码实现​

​4.1 安装 Nginx​

​步骤 1:更新软件包列表​

sudo apt update

​步骤 2:安装 Nginx​

sudo apt install nginx -y

​步骤 3:验证安装​

nginx -v  # 查看版本
systemctl status nginx  # 检查运行状态

​步骤 4:启动/停止/重启 Nginx​

sudo systemctl start nginx    # 启动
sudo systemctl stop nginx     # 停止
sudo systemctl restart nginx  # 重启
sudo systemctl reload nginx   # 重新加载配置(不中断服务)

​4.2 卸载 Nginx​

​步骤 1:停止 Nginx 服务​

sudo systemctl stop nginx

​步骤 2:卸载 Nginx 软件包​

sudo apt purge nginx nginx-common -y

​步骤 3:删除残留配置和日志​

sudo rm -rf /etc/nginx /var/log/nginx

​4.3 配置 Nginx​

​场景 1:托管静态网站​

  1. 创建网站目录和测试页面:

    sudo mkdir -p /var/www/example.com/html
    echo "<h1>Welcome to Example.com!</h1>" | sudo tee /var/www/example.com/html/index.html
  2. 配置 Nginx 虚拟主机:

    sudo nano /etc/nginx/sites-available/example.com

    添加以下内容:

    server {
        listen 80;
        server_name example.com www.example.com;
    
        root /var/www/example.com/html;
        index index.html;
    
        location / {
            try_files $uri $uri/ =404;
        }
    }
  3. 启用配置并重启 Nginx:

    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
    sudo nginx -t  # 测试配置语法
    sudo systemctl reload nginx
  4. 本地测试(修改 /etc/hosts):

    127.0.0.1 example.com www.example.com

    浏览器访问 http://example.com


​场景 2:反向代理到后端服务​

假设后端服务运行在 http://localhost:3000

server {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

​场景 3:负载均衡​

配置多个后端服务器:

upstream backend {
    server 192.168.1.101;
    server 192.168.1.102;
    server 192.168.1.103;
}

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://backend;
    }
}

​5. 原理解释与核心特性​

​5.1 事件驱动架构​

Nginx 使用 ​​epoll/kqueue​​(Linux/BSD)实现高效事件通知,单线程即可处理数万连接,避免了多线程的上下文切换开销。

​5.2 非阻塞 I/O​

通过异步非阻塞方式处理请求,避免等待慢速操作(如磁盘 I/O 或数据库查询)阻塞整个进程。

​5.3 模块化设计​

  • ​核心模块​​:HTTP、Mail、Stream 等基础功能。
  • ​第三方模块​​:如 Lua(OpenResty)、图像处理等。

​6. 原理流程图​

客户端请求 → Nginx(反向代理/负载均衡) → 后端服务器(如 Tomcat、Node.js)
                      ↑
               (静态文件直接返回)

​7. 环境准备​

  • ​Ubuntu 20.04/22.04 LTS​
  • ​Root 或 sudo 权限​
  • ​基础命令行知识​

​8. 实际应用代码示例​

​8.1 动态内容代理(PHP-FPM)​

  1. 安装 PHP-FPM:

    sudo apt install php-fpm php-mysql -y
  2. 配置 Nginx 支持 PHP:

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }

​9. 测试步骤​

  1. ​检查 Nginx 状态​​:

    systemctl status nginx
  2. ​测试配置语法​​:

    nginx -t
  3. ​压力测试(使用 ab)​​:

    sudo apt install apache2-utils -y
    ab -n 10000 -c 100 http://example.com/

​10. 疑难解答​

​10.1 端口冲突​

若端口 80 被占用(如 Apache):

sudo netstat -tulnp | grep :80
sudo systemctl stop apache2

​10.2 权限问题​

确保 Nginx 用户(www-data)有权限访问网站目录:

sudo chown -R www-data:www-data /var/www/example.com

​11. 未来展望与技术趋势​

  • ​HTTP/3 支持​​:Nginx 已支持 QUIC/HTTP3,提升移动端性能。
  • ​边缘计算​​:结合 CDN 和边缘节点,进一步降低延迟。
  • ​AI 集成​​:通过 Wasm 模块实现智能流量分析。

​12. 总结​

  • ​Nginx 是高性能 Web 基础设施的核心组件​​,适用于 Web 服务、反向代理、负载均衡等多种场景。
  • ​Ubuntu 上的安装和配置简单​​,通过模块化设计可灵活扩展功能。
  • ​掌握 Nginx 原理和优化技巧​​,能显著提升系统可靠性和性能。


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。