Linux 下 Nginx 服务器从入门到精通:安装、配置、实战与性能优化
在高性能 Web 服务器领域,Nginx 绝对是 “顶流”—— 它以高并发、低内存占用、稳定可靠的特性,占据了全球近 40% 的 Web 服务器市场(2025 年数据)。无论是部署静态网站、做反向代理,还是实现负载均衡,Nginx 都是开发者的首选工具。
本文针对 Linux 系统(覆盖 CentOS、Ubuntu 主流发行版),从零基础带你掌握 Nginx 的核心用法,全程附带可直接复制的命令与实战案例,新手也能轻松上手!
一、为什么选择 Nginx?先搞懂核心优势
在动手前,先明确 Nginx 的 “过人之处”,避免盲目学习:
-
高并发处理:采用 “异步非阻塞” 事件模型,单台服务器可轻松支撑 10 万 + 并发连接(Apache 通常仅数千);
-
轻量高效:启动后内存占用仅几 MB,相比 Apache 更节省服务器资源;
-
功能全面:支持静态资源服务、反向代理、负载均衡、Gzip 压缩、SSL 加密等;
-
稳定性强:核心模块经过多年迭代,崩溃概率极低,且支持热部署(更新配置无需重启服务)。
二、准备工作:Linux 环境检查与依赖安装
无论用哪种方式安装 Nginx,都需要先确保系统满足基础依赖(主要是编译工具和库文件)。
2.1 系统版本确认
先通过以下命令查看 Linux 发行版,后续安装命令会针对性区分:
# 查看系统版本(CentOS/RHEL会显示版本号,Ubuntu会显示发行版名称)
cat /etc/os-release
# 或简化命令
lsb_release -a
2.2 安装基础依赖
(1)CentOS/RHEL 系统
# 安装编译工具(gcc、g++)、依赖库(pcre、zlib、openssl)
yum install -y gcc gcc-c++ make pcre-devel zlib-devel openssl-devel
说明:pcre-devel 用于支持 Nginx 的 URL 重写(Rewrite)模块,zlib-devel 用于 Gzip 压缩,openssl-devel 用于 HTTPS 加密。
(2)Ubuntu/Debian 系统
# 对应依赖安装命令
apt update && apt install -y gcc g++ make libpcre3-dev zlib1g-dev libssl-dev
三、3 种 Nginx 安装方式:新手推荐 “包管理器”,进阶选 “源码编译”
Nginx 有 3 种主流安装方式,各有适用场景,根据自身需求选择:
3.1 方式 1:包管理器安装(新手首选,1 分钟完成)
通过 yum/apt 直接安装,优点是 “快、无需手动配置依赖”,缺点是版本可能不是最新(但满足大部分场景)。
(1)CentOS/RHEL 系统
# 1. 安装Nginx官方仓库(默认yum源的Nginx版本较旧)
rpm -Uvh http://nginx.org/packages/centos/$(rpm -E %{centos_ver})/noarch/RPMS/nginx-release-centos-$(rpm -E %{centos_ver})-1.el$(rpm -E %{centos_ver}).ngx.noarch.rpm
# 2. 安装Nginx
yum install -y nginx
# 3. 启动并设置开机自启
systemctl start nginx
systemctl enable nginx
# 4. 验证是否安装成功(出现"active (running)"表示正常)
systemctl status nginx
(2)Ubuntu/Debian 系统
# 1. 安装Nginx(Ubuntu默认源已包含较新的Nginx版本)
apt install -y nginx
# 2. 启动并设置开机自启
systemctl start nginx
systemctl enable nginx
# 3. 验证(同CentOS)
systemctl status nginx
测试访问
安装完成后,在浏览器输入 Linux 服务器的 IP 地址(如http://192.168.1.100),若看到 Nginx 默认欢迎页,说明安装成功!
3.2 方式 2:源码编译安装(进阶首选,自定义功能)
若需要最新版本或自定义编译模块(如添加第三方缓存模块),推荐源码编译。以 Nginx 1.25.3(2025 年稳定版)为例:
# 1. 下载Nginx源码包(官网地址:https://nginx.org/en/download.html)
wget https://nginx.org/download/nginx-1.25.3.tar.gz
# 2. 解压源码包
tar -zxvf nginx-1.25.3.tar.gz
cd nginx-1.25.3
# 3. 配置编译参数(重点:--prefix指定安装目录,--with-*启用模块)
./configure \
--prefix=/usr/local/nginx \ # 安装目录(建议固定,后续好管理)
--with-http_ssl_module \ # 启用HTTPS模块
--with-http_gzip_static_module \ # 启用Gzip静态压缩
--with-http_stub_status_module # 启用状态监控模块
# 4. 编译并安装(-j4表示用4个线程编译,速度更快)
make -j4 && make install
# 5. 配置系统服务(方便用systemctl管理)
cat > /usr/lib/systemd/system/nginx.service << EOF
[Unit]
Description=Nginx Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
3.3 方式 3:Docker 安装(容器化部署,隔离性好)
若习惯用 Docker 管理服务,可通过容器快速启动 Nginx:
# 1. 拉取Nginx官方镜像
docker pull nginx:latest
# 2. 启动容器(映射80端口,挂载本地目录到容器内)
docker run -d \
--name nginx-server \
-p 80:80 \ # 主机80端口映射到容器80端口
-v /root/nginx/html:/usr/share/nginx/html \ # 本地静态资源目录挂载
-v /root/nginx/conf:/etc/nginx/conf.d \ # 本地配置文件挂载
nginx:latest
# 3. 验证(查看容器运行状态)
docker ps | grep nginx-server
四、Nginx 核心配置解析:搞懂这几个文件就够了
无论哪种安装方式,Nginx 的配置逻辑一致,核心文件位置如下(以 “包管理器安装” 为例,源码安装对应/usr/local/nginx/conf):
配置文件 / 目录 | 路径(CentOS/Ubuntu) | 作用 |
主配置文件 | /etc/nginx/nginx.conf | 全局配置(进程数、日志、include 等) |
虚拟主机配置目录 | /etc/nginx/conf.d/ | 存放站点配置(如 xxx.conf) |
静态资源默认目录 | /usr/share/nginx/html | 默认首页(index.html)所在目录 |
日志目录 | /var/log/nginx/ | access.log(访问日志)、error.log(错误日志) |
4.1 主配置文件(nginx.conf)关键参数
打开主配置文件:vim /etc/nginx/nginx.conf,重点关注以下参数(已加注释):
# 1. 全局配置:运行用户、进程数(建议设为CPU核心数)
user nginx;
worker_processes auto; # auto表示自动匹配CPU核心数
# 2. 错误日志与PID文件路径
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
# 3. 事件模块:并发连接数配置
events {
worker_connections 10240; # 每个worker进程最大连接数(默认1024,建议调至10240)
use epoll; # 启用epoll事件模型(Linux下高性能模型,默认已启用)
}
# 4. HTTP核心模块:全局HTTP配置
http {
include /etc/nginx/mime.types; # 媒体类型映射(如.html对应text/html)
default_type application/octet-stream;
# 日志格式(main为默认格式,可自定义)
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
# 性能优化参数
sendfile on; # 启用零拷贝(加速文件传输)
tcp_nopush on; # 配合sendfile使用,减少网络包数量
tcp_nodelay on;
keepalive_timeout 65; # 长连接超时时间(秒)
types_hash_max_size 2048;
# 引入虚拟主机配置(所有conf.d目录下的.conf文件)
include /etc/nginx/conf.d/*.conf;
}
五、总结与进阶建议
到这里,你已经掌握了 Linux 下 Nginx 的核心用法 —— 从安装到配置,再到排坑,足够应对日常开发需求。如果想进一步提升,可以学习这些内容:
-
HTTPS 配置:给 Nginx 添加 SSL 证书(Let's Encrypt 免费证书),实现
http->https
跳转; -
Nginx 缓存:配置
proxy_cache
或fastcgi_cache
,减少后端服务压力; -
限流配置:用
limit_req
或limit_conn
限制单 IP 的请求频率,防止恶意攻击; -
监控告警:用 Prometheus+Grafana 监控 Nginx 的并发数、请求量、错误率,设置告警阈值。
如果在操作中遇到其他问题,欢迎在评论区留言,觉得这篇文章有用的话,别忘了点赞 + 收藏,后续还会更新更多 Linux 和服务器实战内容~