​​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个月内不可修改。