本文档详细记录了从源码下载、依赖安装、编译配置到启动验证的全过程,并提供了常见问题的解决方案。推荐在 CentOS/RHEL 或 Ubuntu/Debian 等主流 Linux 发行版上操作。

一、概述

Nginx 是一款高性能的 HTTP 服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。通过源码编译安装,您可以灵活地选择需要的功能模块、优化编译参数,并定制安装路径,从而满足特定的生产环境需求。

二、前期准备

1.系统要求

  • 操作系统:CentOS 7/8、RHEL 7/8、Ubuntu 18.04/20.04 或更高版本
  • 硬件:至少 1 核 CPU、1GB 内存(视负载而定)
  • 磁盘空间:源码编译需要约 200MB 临时空间,安装后约 50MB

2.下载源码

访问 Nginx 官方下载页面 获取最新稳定版(或指定版本)。本文使用 1.28.0 版本。

wget https://nginx.org/download/nginx-1.28.0.tar.gz

3.解压

tar -zxvf nginx-1.28.0.tar.gz
cd nginx-1.28.0

三.编译与安装

1. 安装依赖

#对于 CentOS/RHEL 系统
yum -y groupinstall "Development Tools"
yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel

#对于 Ubuntu/Debian 系统
apt update
apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev

2. 配置编译选项

​ 进入解压后的 Nginx 源码目录,使用./configure 脚本用于检测系统环境并生成 Makefile。您可以通过添加参数选择需要编译的模块和功能。

2.1 常用配置参数说明
配置参数 作用说明 生产环境实用性
--prefix=/usr/local/nginx 指定安装目录 ⭐⭐⭐⭐⭐ 必选
--with-http_ssl_module 启用 HTTPS/SSL 支持 ⭐⭐⭐⭐⭐ 必选
--with-http_v2_module 启用 HTTP/2 支持 ⭐⭐⭐⭐ 推荐
--with-http_stub_status_module 启用状态页,可用于监控连接数等 ⭐⭐⭐⭐ 推荐
--with-http_realip_module 获取真实客户端 IP,当 Nginx 位于代理之后时很有用 ⭐⭐⭐ 有用
--with-http_gzip_static_module 启用静态 gzip 压缩,可预压缩静态文件以节省 CPU ⭐⭐⭐ 有用
--with-stream 启用 TCP/UDP 代理,用于非 HTTP 流量的负载均衡 ⭐⭐ 按需
--with-http_sub_module 响应内容替换,可在返回给客户端的页面中替换字符串 ⭐⭐ 按需
--with-pcre 显式指定使用 PCRE 库(通常系统会自动找到) 一般不需要
--with-zlib 显式指定使用 zlib 库 一般不需要
2.2 基础配置示例

兼顾常用功能,推荐使用以下配置:

./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_stub_status_module \
--with-http_realip_module \
--with-http_gzip_static_module \
--with-stream \
--with-http_sub_module
2.3 自定义配置

若需要第三方模块(如 nginx-module-vtslua-nginx-module),可在配置时通过 --add-module=PATH 添加。具体请参考模块文档。

2.4 编译安装

配置成功后,执行以下命令进行编译和安装:

  • make:根据 Makefile 编译源码。
  • make install:将编译好的文件复制到 --prefix 指定的目录。

提示:若编译过程中出现错误,请检查依赖是否完整,或查看输出日志中的提示。

# 编译源码
make  
# 安装到指定目录      
make install 

四.运行与验证

1.启动 Nginx

安装完成后,Nginx 的主要文件都会存放在 --prefix 指定的目录(如 /usr/local/nginx)下。

/usr/local/nginx/sbin/nginx

2.检查进程

正常输出应包含一个 master 进程和多个 worker 进程。如果能看到 masterworker 进程说明启动成功

ps aux | grep nginx

3.测试配置文件

修改配置文件后,务必测试语法:

输出 syntax is oktest is successful 表示配置正确。

/usr/local/nginx/sbin/nginx -t

4.常用管理命令

进入安装目录的 sbin 下执行(或添加至 PATH):

命令 作用
./nginx -s reload 重新加载配置(平滑)
./nginx -s quit 优雅停止
./nginx -s stop 强制停止
./nginx -V 查看编译时配置参数

5.访问测试

使用浏览器或 curl 访问服务器 IP,看到 “Welcome to nginx!” 页面即表示安装成功。

curl http://127.0.0.1

五、常见问题排查

1.端口占用

若启动失败,检查 80 端口是否被占用:

若被 Apache 或其他服务占用,可修改 Nginx 配置文件中的 listen 端口,或停止占用程序。

netstat -tlnp | grep :80

2.编译时提示缺少某个库

根据错误信息安装对应的开发包。例如缺少 libssl.so 则需安装 openssl-devel(CentOS)或 libssl-dev(Ubuntu)。

3.无法访问页面

  • 检查防火墙是否放行相应端口。
  • 检查 SELinux 是否阻止:getenforce,若为 Enforcing,可尝试临时关闭测试。
  • 检查 Nginx 配置文件中的 root 路径是否正确,且具有读取权限。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐