第1章:Nginx初识
1.1 Nginx是什么?
1.1.1 历史背景与发展
Nginx(发音为"engine x")是一款由俄罗斯开发者Igor Sysoev创建的高性能Web服务器软件。它的开发始于2002年,并于2004年首次公开发布。
发展历程:
- 2002年:Igor Sysoev开始开发Nginx,旨在解决C10K问题(同时处理10,000个并发连接)
- 2004年:首次公开发布
- 2011年:成立Nginx公司,提供商业支持
- 2019年:被F5 Networks以6.7亿美元收购
- 至今:持续更新,成为全球最受欢迎的Web服务器之一
1.1.2 Nginx vs Apache vs 其他Web服务器
| 特性 | Nginx | Apache |
|---|---|---|
| 架构 | 事件驱动、非阻塞I/O | 多进程/线程模型 |
| 并发处理 | 高性能,支持10,000+并发连接 | 相对较低,受限于进程/线程数量 |
| 内存占用 | 低内存消耗 | 较高内存消耗 |
| 配置风格 | 简洁的配置文件 | 复杂的.htaccess文件 |
| 模块化 | 动态模块支持 | 丰富的模块生态 |
| 适用场景 | 高并发Web服务器、反向代理、负载均衡 | 传统Web应用、动态内容处理 |
其他流行Web服务器:
- Lighttpd:轻量级,适合静态内容
- Caddy:自动HTTPS,现代化配置
- Microsoft IIS:Windows平台专用
1.1.3 应用场景
Nginx的主要应用场景包括:
- Web服务器:直接提供静态资源服务
- 反向代理:将客户端请求转发给后端服务器
- 负载均衡:将请求分发到多个后端服务器,提高可用性和性能
- API网关:管理、路由和保护API请求
- HTTP缓存:缓存静态资源,减少后端服务器压力
- 安全防护:防止DDoS攻击,提供基本的安全功能
1.2 安装与第一个Hello World
1.2.1 不同操作系统安装方法
Ubuntu/Debian系统
安装步骤:
更新软件包列表:
sudo apt update安装Nginx:
sudo apt install nginx -y启动Nginx服务:
sudo systemctl start nginx设置开机自启:
sudo systemctl enable nginx
CentOS/RHEL系统
安装步骤:
安装EPEL仓库(如果尚未安装):
sudo yum install epel-release -y安装Nginx:
sudo yum install nginx -y启动Nginx服务:
sudo systemctl start nginx设置开机自启:
sudo systemctl enable nginx
macOS系统
安装步骤:
确保已安装Homebrew包管理器
安装Nginx:
brew install nginx启动Nginx:
brew services start nginx
Windows系统
安装步骤:
访问Nginx官方网站(https://nginx.org/en/download.html)下载Windows版本
解压下载的压缩包到指定目录,如
C:\nginx打开命令提示符,进入Nginx目录:
cd C:\nginx启动Nginx:
start nginx
1.2.2 验证安装
无论使用哪种操作系统,安装完成后,您都可以通过以下方法验证Nginx是否正常运行:
通过浏览器访问:
打开浏览器,输入http://localhost或http://127.0.0.1,您应该看到Nginx的默认欢迎页面通过命令行检查:
curl -I http://localhost预期输出:
HTTP/1.1 200 OK Server: nginx/[版本号] ...检查服务状态:
sudo systemctl status nginx或
nginx -t
1.2.3 基本目录结构
Nginx的主要目录结构:
| 目录/文件 | 用途 |
|---|---|
/etc/nginx/ |
主配置目录 |
/etc/nginx/nginx.conf |
主配置文件 |
/etc/nginx/conf.d/ |
额外配置文件目录 |
/var/www/html/ |
默认网页根目录 |
/var/log/nginx/ |
日志文件目录 |
/usr/sbin/nginx |
Nginx可执行文件 |
1.2.4 第一个配置:静态网页服务
步骤1:创建自定义网页
创建网页目录:
sudo mkdir -p /var/www/mywebsite创建index.html文件:
sudo nano /var/www/mywebsite/index.html写入以下内容:
<!DOCTYPE html> <html> <head> <title>我的第一个Nginx网站</title> </head> <body> <h1>Hello, Nginx!</h1> <p>这是我使用Nginx创建的第一个网站。</p> </body> </html>设置目录权限:
sudo chown -R www-data:www-data /var/www/mywebsite
步骤2:创建Nginx配置文件
创建配置文件:
sudo nano /etc/nginx/conf.d/mywebsite.conf写入以下配置:
server { listen 80; server_name mywebsite.local; root /var/www/mywebsite; index index.html; }
步骤3:验证配置并重启Nginx
测试配置文件:
sudo nginx -t预期输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful重启Nginx服务:
sudo systemctl restart nginx
步骤4:访问网站
在本地DNS解析中添加域名(可选):
sudo nano /etc/hosts添加:
127.0.0.1 mywebsite.local通过浏览器访问:
- 使用域名:
http://mywebsite.local - 或直接使用IP:
http://localhost
您应该能看到我们创建的"Hello, Nginx!"页面
- 使用域名:
1.2.5 常见问题与解决方案
问题1:端口被占用
症状:Nginx无法启动,报错"address already in use"
解决方案:
查找占用80端口的进程:
sudo lsof -i :80终止占用端口的进程:
sudo kill -9 [进程ID]重启Nginx:
sudo systemctl restart nginx
问题2:权限错误
症状:浏览器显示"403 Forbidden"
解决方案:
检查文件权限:
ls -la /var/www/mywebsite/设置正确的权限:
sudo chown -R www-data:www-data /var/www/mywebsite sudo chmod -R 755 /var/www/mywebsite
问题3:配置文件语法错误
症状:Nginx无法启动,报错"nginx: configuration file /etc/nginx/nginx.conf test failed"
解决方案:
- 使用
nginx -t命令查看具体错误信息 - 根据错误信息修复配置文件
- 再次测试配置:
sudo nginx -t
章节总结
在本章中,我们学习了:
- Nginx的基本概念:历史背景、与其他Web服务器的对比以及应用场景
- Nginx的安装方法:在不同操作系统上的安装步骤
- 验证安装:通过浏览器和命令行验证Nginx是否正常运行
- 基本配置:创建自定义网页和Nginx配置文件
- 常见问题:端口占用、权限错误和配置文件语法错误的解决方案
实践练习
- 在您的操作系统上安装Nginx
- 创建一个自定义网页,内容包含您的名字和当前日期
- 配置Nginx以提供该网页服务
- 验证您可以通过浏览器访问该网页
- 尝试修改Nginx配置,添加一个新的server块
延伸阅读
下一章:第2章:核心概念理解