Nginx 安装配置(建议收藏)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观
前言
在互联网架构中,Nginx 被广泛视为“网络交通指挥官”。它不仅能够高效处理静态资源请求,还能通过反向代理、负载均衡等功能优化服务器性能。对于编程初学者和中级开发者来说,掌握 Nginx 的安装与配置,是迈向全栈开发的重要一步。本文将通过循序渐进的方式,结合实际案例和代码示例,帮助读者快速上手 Nginx,并理解其核心原理。
Nginx 的核心功能与应用场景
1. Nginx 是什么?
Nginx(发音为“engine-x”)是一个高性能的 HTTP 服务器和反向代理服务器,最初由俄罗斯开发者 Igor Sysoev 为应对高并发场景而设计。它的核心优势在于:
- 事件驱动架构:通过异步非阻塞模式,支持每秒处理数万次请求。
- 轻量级:内存占用低,适合资源受限的环境。
- 灵活性:通过模块化设计,可扩展 SSL/TLS、负载均衡、缓存等功能。
形象比喻:
如果把网站比作一座商场,Nginx 就像商场入口的智能导览员。它能快速分配访客到不同的服务区域(如静态资源服务器、后端 API 服务器),同时拦截恶意请求或缓存热门商品,提升整体效率。
2. 典型应用场景
- 静态资源服务:直接提供 HTML、图片、CSS 等静态文件。
- 反向代理:隐藏真实后端服务地址,将请求转发到内部服务器。
- 负载均衡:将流量分发到多台服务器,避免单点过载。
- SSL 加密:在服务器层统一处理 HTTPS 协议。
环境准备与安装步骤
1. 系统要求
Nginx 支持多种操作系统,本文以 Ubuntu 22.04 LTS 为例。确保已连接互联网,并拥有管理员权限(sudo
)。
2. 安装 Nginx
步骤 1:更新软件源
sudo apt-get update
sudo apt-get upgrade -y
提示:-y
参数表示自动确认所有操作,避免中途打断。
步骤 2:安装 Nginx
sudo apt-get install nginx -y
安装完成后,可通过以下命令验证服务状态:
sudo systemctl status nginx
成功运行时,状态应显示为 active (running)
。
步骤 3:防火墙配置(可选但推荐)
默认情况下,Nginx 会监听 80 端口(HTTP)和 443 端口(HTTPS)。若服务器启用了防火墙(如 ufw
),需开放对应端口:
sudo ufw allow 'Nginx Full'
基础配置与验证
1. 配置文件结构
Nginx 的配置文件位于 /etc/nginx/
目录中,主要文件包括:
| 文件/目录 | 作用说明 |
|-------------------|----------------------------|
| nginx.conf
| 主配置文件,定义全局参数 |
| sites-available/
| 存放所有虚拟主机配置模板 |
| sites-enabled/
| 链接到启用的虚拟主机配置 |
| conf.d/
| 存放附加配置片段 |
2. 默认配置解析
安装完成后,Nginx 会自动生成一个默认站点配置文件:/etc/nginx/sites-available/default
。其核心内容如下:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
listen 80
:监听 HTTP 协议的 80 端口。root
:指定网站文件的根目录路径。location /
:定义请求路径的处理规则,try_files
表示按顺序查找文件或目录,未找到则返回 404。
3. 测试与重启服务
修改配置后,务必执行以下命令确保语法正确:
sudo nginx -t
若无报错,重启服务使配置生效:
sudo systemctl restart nginx
4. 访问测试
打开浏览器,输入服务器的公网 IP 地址(如 http://192.168.1.100
),若看到 Nginx 的默认欢迎页面,则安装成功。
进阶配置:反向代理与负载均衡
1. 反向代理配置
假设我们有一个后端 API 服务运行在本地端口 3000
,可通过 Nginx 将 /api
路径的请求转发过去。
步骤 1:创建新配置文件
sudo nano /etc/nginx/sites-available/backend-proxy
步骤 2:编写配置内容
server {
listen 80;
server_name your-domain.com;
location /api {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
proxy_pass
:指定后端服务地址。proxy_set_header
:传递客户端真实 IP 和 Host 头,避免后端服务误判请求来源。
步骤 3:启用配置并测试
创建符号链接并重启服务:
sudo ln -s /etc/nginx/sites-available/backend-proxy /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx
2. 负载均衡配置
假设我们有两台后端服务器(192.168.1.2
和 192.168.1.3
),可通过轮询算法分发请求。
步骤 1:修改主配置文件
upstream backend_servers {
server 192.168.1.2:3000;
server 192.168.1.3:3000;
}
server {
listen 80;
server_name loadbalancer.example.com;
location / {
proxy_pass http://backend_servers;
}
}
upstream
:定义服务器组,支持ip_hash
(会话保持)或least_conn
(最小连接数)等策略。
步骤 2:测试与验证
通过不断刷新页面,观察请求是否交替分配到两台服务器。
常见问题与调试技巧
1. 403 Forbidden 错误
原因:Nginx 无权访问网站目录。
解决方案:
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
2. 配置语法错误
当 nginx -t
报错时,需逐句检查配置文件。例如:
- 缺少分号
;
- 注释符
#
错误位置
3. 日志分析
Nginx 的访问日志和错误日志分别位于:
/var/log/nginx/access.log
/var/log/nginx/error.log
通过 tail -f
实时查看日志:
sudo tail -f /var/log/nginx/error.log
结论
通过本文,读者已掌握了从 Nginx 安装、基础配置到高级功能(反向代理、负载均衡)的全流程。Nginx 的灵活性和高效性使其成为现代 Web 架构中不可或缺的组件。建议读者:
- 通过实际项目练习配置,例如搭建多站点或 HTTPS 服务;
- 深入学习
location
块的匹配规则和变量使用; - 结合监控工具(如 Prometheus + Grafana)优化性能。
掌握 Nginx 配置不仅提升了技术栈的广度,更能帮助开发者从容应对高并发场景。下一步,可以尝试将 Nginx 与 Docker 或 Kubernetes 集成,探索更复杂的部署方案。
通过本文的系统化讲解,读者能够逐步构建对 Nginx 的全局认知,并在实际开发中灵活运用其功能。