- 文档
- 教程
【免费下载链接】nginx-tutorial
这是一个 Nginx 极简教程,目的在于帮助新手快速入门 Nginx。
本文以 nginx-tutorial 仓库的 Nginx 运维 文档为主体,系统讲解 Nginx 在 Windows、Linux(rpm 包与源码编译两种方式)以及 Docker 容器三种形态下的安装、启动、自启动与日常运维方法,并结合仓库内自带的 examples 演示工程与脚本,给出可直接照做的操作步骤与可验证的配置证据。读完本文,你将能够独立完成 Nginx 从下载安装到开机自启、再到配置校验与重启的全流程运维工作。
一、Nginx 运维概览:先认清三种部署形态
Nginx 的"安装"从来不只是把二进制放到机器上那么简单,它通常与后续的配置管理、进程守护、日志轮转、负载均衡策略绑定在一起。结合本仓库的教程体系,运维安装是整个链路的第一步:
- 快速上手:Nginx 快速教程 讲解常用命令与七大实战场景(反向代理、HTTPS、负载均衡、多 webapp、静态站点、文件服务器、跨域);
- 安装运维:Nginx 运维(即本文主体)覆盖 Windows / Linux / Docker 三种安装方式与开机自启动;
- 配置详解:Nginx 配置 深入 nginx.conf 的完整参数体系与工程化组织规范;
- 排错手册:Nginx 问题 汇集常见问题。
从部署形态上看,本仓库文档覆盖了三条主线:
| 部署形态 | 适用场景 | 安装方式 |
|---|---|---|
| Windows 二进制包 | 本地开发、演示、学习 | 官网下载 nginx/Windows 压缩包,解压即用 |
| Linux rpm 包 | 生产服务器快速部署 | 通过 yum 源安装,自带 systemd 服务文件 |
| Linux 源码编译 | 需要定制模块、安装路径、编译参数 | configure + make + make install |
| Docker 容器 | 隔离环境、快速迁移、CI/CD | docker pull + docker run 挂载配置 |
仓库中 examples/nginx-1.14.0 内置了 Nginx 1.14.0 的 Windows 官方版本及其配套启动/停止脚本,并随 examples 提供了 6 个一键式实战演示(反向代理、负载均衡、多 webapp、前后端分离、文件服务器、静态站点),可作为安装完成后验证效果的现成环境。
二、Windows 安装 Nginx
2.1 下载与解压
进入 Nginx 官方下载地址,选择nginx/Windows-xxx版本(Windows 平台专用构建,与 Linux 源码包不同),下载后解压到本地即可,无需执行安装程序。
2.2 启动、校验与停止
解压目录即 Nginx 的"安装目录",目录内通常包含conf/(配置文件)、html/(默认站点)、logs/(日志)等子目录。启动方式如下(以 C 盘根目录为例):
cd C: cd C:\nginx-0.8.54 start nginx更稳妥的启动流程是"先校验配置、再启动"。仓库中 nginx-start.bat 正是这一标准做法的落地脚本,其核心命令为:
rem 1. 如果目录不存在 logs 目录,则创建 if not exist %~dp0logs ( md %~dp0logs ) rem 2. 如果目录不存在 temp 目录,则创建 if not exist %~dp0temp ( md %~dp0temp ) rem 3. 指定 conf/nginx.conf ,启动 nginx nginx.exe -t -c conf/nginx.conf start nginx停止服务则使用仓库中的 nginx-stop.bat,内部只有一条命令:
nginx.exe -s stop注:Nginx / Win32 运行在一个控制台程序,而非 Windows 服务方式。服务器方式目前还处于开发尝试阶段。这意味着 Windows 下 Nginx 随系统自启需要通过启动目录、计划任务等额外手段实现,本文不展开。
2.3 验证安装
启动后,在浏览器访问http://localhost,出现 Nginx 默认欢迎页(对应html/index.html)即表示安装成功。随后即可按照 Nginx 快速教程 的实战章节,或直接复用仓库 examples 中的demo0x-start.bat演示脚本进入配置实战。
三、Linux 安装 Nginx
Linux 下有两种主流安装路径:rpm 包方式(推荐)与源码编译方式,二者各有取舍,下面分别说明。
3.1 rpm 包方式(推荐)
rpm 方式的核心思路是:先安装 Nginx 官方维护的 yum 源,再用 yum 直接安装 nginx,全程自动化处理依赖。
(1)下载 Nginx 官方 yum 源 rpm 包
进入 Nginx 官方软件包下载页面,选择对应发行版(如 CentOS 7)的 release 包:
$ wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm(2)安装 yum 源
注意:这个 rpm 包本身并不是 nginx 程序,而是安装了 nginx 的 yum 源。
$ rpm -ivh nginx-*.rpm(3)通过 yum 正式安装 nginx
$ yum install nginx(4)放行 80 端口(防火墙)
安装后默认监听 80 端口,需要放行防火墙规则(CentOS 7 使用 firewalld):
$ firewall-cmd --zone=public --add-port=80/tcp --permanent $ firewall-cmd --reloadrpm/yum 安装后,配置与日志通常遵循发行版约定(如/etc/nginx/nginx.conf、/var/log/nginx/),并且会自动创建 nginx.service 文件,这一点对后续设置开机自启动非常关键(见第四章)。
3.2 源码编译方式
源码编译适合需要自定义安装路径、按需选择模块(如 stub_status、ssl)、或发行版软件源版本滞后的场景。本仓库运维文档以 Nginx 1.12.2 为例演示完整流程。
3.2.1 安装编译工具及依赖库
Nginx 源码编译依赖 gcc 及若干库文件,必须先安装:
$ yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-develNginx 的正则表达式能力依赖PCRE 库,需要单独下载编译:
(1)下载解压到本地(以下以 8.35 版本为例):
wget -O /opt/pcre/pcre-8.35.tar.gz http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz cd /opt/pcre tar zxvf pcre-8.35.tar.gz(2)编译安装 PCRE
cd /opt/pcre/pcre-8.35 ./configure make && make install(3)验证 PCRE 是否安装成功
执行pcre-config --version命令,能输出版本号即说明安装成功。
3.2.2 编译安装 Nginx
(1)下载解压源码(以 1.12.2 版本为例):
wget -O /opt/nginx/nginx-1.12.2.tar.gz http://nginx.org/download/nginx-1.12.2.tar.gz cd /opt/nginx tar zxvf nginx-1.12.2.tar.gz(2)configure 配置并编译安装
cd /opt/nginx/nginx-1.12.2 ./configure --with-http_stub_status_module --with-http_ssl_module --with-pcre=/opt/pcre/pcre-8.35 make && make install三个核心 configure 参数的含义:
| 参数 | 作用 |
|---|---|
--with-http_stub_status_module | 启用stub_status状态页模块,可实时查看 Nginx 连接数等运行状态 |
--with-http_ssl_module | 启用 SSL 支持,是配置 HTTPS 反向代理(443 端口)的前提 |
--with-pcre=/opt/pcre/pcre-8.35 | 显式指定 PCRE 源码路径,让 Nginx 编译时链接刚编译好的 PCRE 库 |
不指定--prefix时,默认安装到/usr/local/nginx(主配置位于/usr/local/nginx/conf/nginx.conf,可执行文件位于/usr/local/nginx/sbin/nginx)。
(3)放行 80 端口
$ firewall-cmd --zone=public --add-port=80/tcp --permanent $ firewall-cmd --reload(4)启动 Nginx 并验证
安装成功后,直接执行nginx命令即可启动(完整路径为/usr/local/nginx/sbin/nginx)。启动后访问站点http://<服务器IP>即可看到 Nginx 欢迎页,证明编译安装成功。
两种方式对比小结:rpm 方式一条 yum 命令搞定依赖与 systemd 服务文件,适合大多数生产场景;源码方式则把模块选择、安装路径、编译参数的掌控权完全交还给你,代价是需要手动管理依赖并自行编写服务文件(见下文)。
四、Linux 开机自启动配置
CentOS 7 及以上版本使用Systemd进行系统初始化。Systemd 是 Linux 最新的初始化系统(init),设计目标是克服 sysvinit 固有缺点、提高系统启动速度。Systemd 服务文件以.service结尾,是否自动创建该文件,决定了自启动配置的复杂度。
4.1 rpm 包方式:一条命令搞定
如果是通过 rpm 包安装的,安装过程会自动创建nginx.service文件,直接启用即可:
$ systemctl enable nginx.service执行后,Nginx 即被注册为开机自启动服务,同时可通过systemctl start nginx、systemctl status nginx等标准方式管理。
4.2 源码编译方式:手动创建 systemd 服务
如果采用源码编译方式安装(安装到/usr/local/nginx),需要手动创建nginx.service文件。可参考如下通用模板(保存为/usr/lib/systemd/system/nginx.service):
[Unit] Description=nginx - high performance web server After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target随后执行:
# 重新加载 systemd 配置 $ systemctl daemon-reload # 设置开机自启并立即启动 $ systemctl enable nginx $ systemctl start nginx # 查看运行状态 $ systemctl status nginx模板要点说明:
Type=forking:Nginx 主进程启动时会 fork 出 worker 进程,属典型的守护型进程;ExecStartPre:启动前先执行nginx -t校验配置语法,防止配置错误导致服务起不来;ExecReload/ExecStop:通过向主进程发送 HUP / QUIT 信号实现平滑重载与优雅停止,这与nginx -s reload/nginx -s quit的作用一致。
4.3 systemd 方式下的日常运维
注册为 systemd 服务后,日常运维可统一走 systemctl:
systemctl start nginx # 启动 systemctl stop nginx # 停止 systemctl reload nginx # 平滑重载配置(不中断服务) systemctl restart nginx # 重启 systemctl enable nginx # 设置开机自启 systemctl status nginx # 查看状态五、Docker 方式安装与运维
对于隔离环境、快速迁移和 CI/CD 场景,Docker 是更轻量的选择。官方镜像为nginx(Docker Hub 上的官方镜像),整个流程只需三条核心命令:
# 下载镜像 docker pull nginx # 启动容器:挂载日志目录与配置文件 docker run --name my-nginx -p 80:80 \ -v /data/docker/nginx/logs:/var/log/nginx \ -v /data/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \ -d nginx启动命令参数解读:
| 参数 | 含义 |
|---|---|
--name my-nginx | 为容器命名,便于后续引用 |
-p 80:80 | 将宿主机 80 端口映射到容器内 80 端口 |
-v /data/docker/nginx/logs:/var/log/nginx | 将宿主机日志目录挂载到容器日志目录,日志落在宿主机 |
-v ...nginx.conf:/etc/nginx/nginx.conf:ro | 以只读方式挂载自定义主配置,宿主机改配置即容器内生效 |
-d | 后台运行容器 |
容器内 Nginx 的日常操作通过docker exec或docker stop/restart完成:
# 重新加载配置(注:此方式实测无效,只能重启服务) docker exec -it my-nginx nginx -s reload # 停止服务(两种方式) docker exec -it my-nginx nginx -s stop docker stop my-nginx # 重新启动服务 docker restart my-nginx注意:容器内执行
nginx -s reload在部分场景下不能按预期生效,原运维文档的实测结论是"目前测试无效,只能重启服务"。因此在 Docker 形态下修改配置后,优先使用docker restart my-nginx确保生效。
六、Nginx 日常运维命令与配置校验
无论用哪种方式安装,Nginx 的命令行操作都是统一的。常用命令整理如下(完整命令表见 Nginx 快速教程):
| 命令 | 作用 |
|---|---|
nginx -s stop | 快速关闭 Nginx,可能不保存相关信息,并迅速终止 Web 服务 |
nginx -s quit | 平稳关闭 Nginx,保存相关信息,有安排地结束 Web 服务 |
nginx -s reload | 因改变了 Nginx 相关配置,重新加载配置(平滑重载,不中断服务) |
nginx -s reopen | 重新打开日志文件(日志轮转后常用) |
nginx -c filename | 为 Nginx 指定一个配置文件,代替缺省的 nginx.conf |
nginx -t | 仅测试配置文件:检查配置语法正确性,并尝试打开配置中引用的文件 |
nginx -v | 显示 Nginx 版本 |
nginx -V | 显示 Nginx 版本、编译器版本和编译配置参数 |
推荐运维习惯:任何一次配置修改后,都先执行nginx -t校验语法,再执行nginx -s reload(或 systemd 下的systemctl reload nginx)平滑生效。配置重载还有多种等价形式,详见 Nginx 配置 的"重加载 Nginx 配置"一节,包括:
systemctl reload nginx service nginx reload /etc/init.d/nginx reload /usr/sbin/nginx -s reload kill -HUP $(cat /var/run/nginx.pid)此外,运维中最常看的两个日志文件是错误日志(error_log,排查启动失败与运行时错误)和访问日志(access_log,分析请求量与来源),其路径可在 nginx.conf 中通过error_log、access_log、log_format指令自定义(参数详解见 Nginx 配置)。
七、一键安装脚本与仓库演示脚本
7.1 Linux 一键安装脚本
运维文档提供了一套 CentOS 7 环境的 Nginx 一键安装脚本(源自软件运维配置脚本集合),其安装说明如下:
- 采用编译方式安装 Nginx,并将其注册为 systemd 服务;
- 安装路径为
/usr/local/nginx; - 默认下载安装1.16.0版本。
默认安装——执行以下任意一条命令即可(在线拉取脚本并执行):
curl -o- <nginx-install.sh 在线地址> | bash wget -qO- <nginx-install.sh 在线地址> | bash自定义安装——将脚本下载到本地后,按以下格式执行([version]指定版本号):
sh nginx-install.sh [version]7.2 仓库自带演示脚本:安装后的一站式验证环境
除运维文档介绍的一键脚本外,本仓库 examples 还内置了一套开箱即用的 Windows 演示环境,安装 Nginx 后可以直接运行验证:
- nginx-start.bat / nginx-stop.bat:启动 / 停止内置的 Nginx 1.14.0;
- examples/nginx-1.14.0/conf/nginx.conf:演示主配置,通过
include conf.d/*.conf;批量引入各场景配置片段; - examples/scripts 下的
demo01-start.bat~demo06-start.bat:一键启动对应实战场景(反向代理、负载均衡、多 webapp、前后端分离、文件服务器、静态站点)。
值得说明的是,演示后端 javaapp 是一个可参数化的嵌入式 Tomcat 服务,其启动类 Main.java 支持通过-Dtomcat.connector.port和-Dtomcat.context.path在启动时指定端口与上下文路径(源码中System.getProperty("tomcat.connector.port")的默认值为 8080)。借助这一设计,演示脚本可以用同一份代码模拟出多个服务器实例,例如负载均衡场景 demo02-start.bat 一次拉起 9021/9022/9023 三个端口,多 webapp 场景 demo03-start.bat 一次拉起/、/product、/user三个上下文,从而直观验证 Nginx 的upstream加权轮询与location上下文分流效果(对应配置见 demo02.conf 与 demo03.conf)。
八、延伸阅读
完成安装与自启动配置后,建议按以下顺序继续深入:
- Nginx 快速教程:常用命令 + 七大实战场景完整配置,可直接对照上手;
- Nginx 配置:nginx.conf 全参数详解、配置工程化组织规范、日志轮转与调试技巧;
- Nginx 问题:常见报错与排查方案;
- examples 示例说明:6 个一键式实战演示的运行步骤与配置要点,用于验证安装结果。
- 文档
- 教程
【免费下载链接】nginx-tutorial
这是一个 Nginx 极简教程,目的在于帮助新手快速入门 Nginx。
相关推荐
Linux-Tutorial 实战:Ansible 安装、配置与 Playbook 自动化运维指南
Linux Tutorial 实战:Ansible 安装、配置与 Playbook 自动化运维指南 本文是《Java 程序员眼中的 Linux》系列(Linux
文档教程技术博客Mall4j 生产部署运维全指南:jar 部署、Docker Compose、Nginx 与上线检查
Mall4j 生产部署运维全指南:jar 部署、Docker Compose、Nginx 与上线检查 导读 :本文是 Mall4j 开源电商系统的部署运维实战指
电商后端前端移动开发如何在全平台部署与运维Covenant:Docker、Linux、Windows终极指南
如何在全平台部署与运维Covenant:Docker、Linux、Windows终极指南 Covenant是一款基于.NET的命令与控制(C2)框架,专为红队人
网络安全应用安全
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考