Linux Nginx 安装指南 – wiki基地


Linux 环境下 Nginx 详细安装指南

引言

在当今互联网世界,高效、稳定、高性能的 Web 服务器扮演着至关重要的角色。Nginx(发音为 “engine-x”)正是这样一款杰出的软件。它是一款高性能的开源 Web 服务器,同时也是一个强大的反向代理服务器、负载均衡器和 HTTP 缓存。因其卓越的并发处理能力和低内存消耗,Nginx 被广泛应用于各种规模的网站和服务中,尤其在高流量场景下表现出色。

本文将为您提供一份详尽的 Linux 环境下 Nginx 安装指南。我们将涵盖两种主要的安装方法:使用发行版自带的包管理器进行安装(推荐用于大多数用户)和从源代码编译安装(提供更大的灵活性,适合需要特定模块或最新版本的用户)。无论您是初学者还是有经验的系统管理员,本指南都将帮助您顺利完成 Nginx 的安装与基本配置。

在开始之前,请确保您具备以下条件:
* 一台运行 Linux 操作系统的服务器或虚拟机。
* 具有 root 或 sudo 权限的用户账户。
* 稳定的互联网连接,用于下载安装文件和依赖项。

本文将以常见的 Linux 发行版为例进行说明,包括基于 Debian 的系统(如 Ubuntu)和基于 RHEL 的系统(如 CentOS、Fedora、AlmaLinux、Rocky Linux)。

第一部分:准备工作

在进行任何安装之前,我们首先需要更新系统软件包列表,以确保您安装的软件是最新版本,并且依赖关系能够得到正确解决。

更新系统软件包

打开您的终端,执行以下命令:

  • 对于基于 Debian 的系统 (如 Ubuntu):
    bash
    sudo apt update
    sudo apt upgrade

    sudo apt update 会从配置的软件源下载最新的软件包列表信息。
    sudo apt upgrade 会升级所有当前已安装的、有新版本的软件包。

  • 对于基于 RHEL 的系统 (如 CentOS, Fedora, AlmaLinux, Rocky Linux):
    bash
    sudo yum update -y
    # 或者使用 dnf (Fedora,较新版本的CentOS/AlmaLinux/Rocky Linux)
    sudo dnf update -y

    sudo yum update -y (或 dnf update -y) 会检查并更新所有已安装的软件包。-y 参数表示自动确认所有提示,无需手动输入 ‘y’。

完成系统更新是良好的实践,可以避免潜在的依赖性问题或安全漏洞。

第二部分:使用包管理器安装 Nginx(推荐)

使用 Linux 发行版自带的包管理器安装 Nginx 是最简单、最快捷的方式。这种方法的好处包括:
* 简便快捷: 只需几条命令即可完成安装。
* 依赖管理: 包管理器会自动处理 Nginx 所需的依赖库。
* 易于更新: 通过包管理器即可轻松更新 Nginx 版本。
* 系统集成: Nginx 服务通常会集成到系统的初始化系统(如 systemd),方便管理。

缺点是,通过这种方式安装的 Nginx 版本可能不是最新的稳定版,并且可能不包含最新的模块或特性。如果您需要最新的功能或特定的模块,可能需要考虑从源代码安装。

方法 2.1:从发行版官方仓库安装

这是最常见和最简单的安装方式。

对于基于 Debian 的系统 (如 Ubuntu)

  1. 安装 Nginx:
    bash
    sudo apt install nginx

    系统会提示您确认安装,输入 Y 并按回车即可。apt 会自动下载 Nginx 及其所有必需的依赖项并进行安装。

  2. 验证安装:
    安装完成后,Nginx 服务通常会自动启动。您可以通过以下命令检查其状态:
    bash
    sudo systemctl status nginx

    如果服务正在运行,您会看到类似 “active (running)” 的输出。如果未运行,可以使用 sudo systemctl start nginx 启动它。

  3. 设置开机自启:
    通常安装时会默认设置为开机自启,但您可以再次确认或手动设置:
    bash
    sudo systemctl enable nginx

对于基于 RHEL 的系统 (如 CentOS, Fedora, AlmaLinux, Rocky Linux)

  1. 安装 Nginx:
    bash
    sudo yum install nginx -y
    # 或者使用 dnf
    sudo dnf install nginx -y

    yumdnf 会自动下载 Nginx 及其依赖项并安装。

  2. 验证安装:
    安装完成后,Nginx 服务可能不会立即启动。您需要手动启动它并检查状态:
    bash
    sudo systemctl start nginx
    sudo systemctl status nginx

    确认服务状态为 “active (running)”。

  3. 设置开机自启:
    bash
    sudo systemctl enable nginx

方法 2.2:从 Nginx 官方仓库安装(获取最新稳定版或主线版)

如果您希望安装 Nginx 的最新稳定版或主线版(Mainline version),而不是发行版仓库中可能较旧的版本,可以添加 Nginx 官方仓库。

对于基于 Debian 的系统 (如 Ubuntu)

  1. 安装必要的工具和依赖:
    bash
    sudo apt update
    sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring -y

    这些工具用于下载 GPG 密钥、管理证书和识别发行版信息。

  2. 导入 Nginx 官方签名密钥:
    bash
    curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

    这将下载签名密钥并将其保存到 /usr/share/keyrings/nginx-archive-keyring.gpg 文件中,用于验证 Nginx 包的完整性和来源。

  3. 验证密钥指纹:
    为了安全起见,验证下载的密钥指纹是否正确。最新的指纹信息可以在 Nginx 官网找到 (https://nginx.org/en/linux_packages.html)。
    bash
    gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

    输出应该包含 pub rsa4096 2011-08-19 [SC]A916 6844 2EE0 EFD9 C8E9 ... B064 69B7 28B3 (指纹会变化,请查阅官网核对)。

  4. 添加 Nginx 仓库到 apt 源列表:
    根据您的 Ubuntu 版本,选择对应的仓库。通常,您需要知道您的发行版代号(例如 focal, jammy, noble 等)。您可以使用 lsb_release -cs 命令获取代号。

    • 对于主线版本 (Mainline): 提供最新功能和Bug修复,可能包含少量新问题。
      bash
      echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
      http://nginx.org/packages/mainline/ubuntu $(lsb_release -cs) nginx" \
      | sudo tee /etc/apt/sources.list.d/nginx.list
    • 对于稳定版本 (Stable): 提供经过充分测试的版本,功能相对稳定。
      bash
      echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
      http://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" \
      | sudo tee /etc/apt/sources.list.d/nginx.list

      选择其中一个添加到 /etc/apt/sources.list.d/nginx.list 文件中。
  5. 更新 apt 软件包列表并安装 Nginx:
    bash
    sudo apt update
    sudo apt install nginx -y

    如果您之前已经安装了Nginx,这个命令会升级到官方仓库的版本。

  6. 验证安装:
    bash
    sudo systemctl status nginx
    sudo systemctl enable nginx
    nginx -v # 查看安装的Nginx版本,确认来自官方仓库

对于基于 RHEL 的系统 (如 CentOS Stream, AlmaLinux, Rocky Linux, Fedora)

  1. 安装必要的工具和依赖:
    bash
    sudo yum install yum-utils -y
    # 或者使用 dnf
    sudo dnf install dnf-utils -y

    yum-utilsdnf-utils 提供了 yum-config-managerdnf config-manager 工具,用于方便地添加仓库。

  2. 添加 Nginx 仓库:

    • 对于主线版本 (Mainline):
      bash
      sudo yum-config-manager --add-repo https://nginx.org/packages/mainline/centos/nginx.repo
      # 或者对于RHEL/AlmaLinux/Rocky Linux 8/9 使用 dnf:
      # sudo dnf config-manager --add-repo https://nginx.org/packages/mainline/centos/nginx.repo
      # 对于Fedora 使用 dnf:
      # sudo dnf config-manager --add-repo https://nginx.org/packages/mainline/fedora/nginx.repo

      请注意,对于较新的 RHEL 衍生版 (如 AlmaLinux 8/9, Rocky Linux 8/9),它们通常与 CentOS 兼容,可以使用 centos 的仓库地址。Fedora 有自己的仓库地址。请根据您的具体发行版选择。

    • 对于稳定版本 (Stable):
      bash
      sudo yum-config-manager --add-repo https://nginx.org/packages/centos/nginx.repo
      # 或者对于RHEL/AlmaLinux/Rocky Linux 8/9 使用 dnf:
      # sudo dnf config-manager --add-repo https://nginx.org/packages/centos/nginx.repo
      # 对于Fedora 使用 dnf:
      # sudo dnf config-manager --add-repo https://nginx.org/packages/fedora/nginx.repo

      选择其中一个仓库添加。

  3. 安装 Nginx:
    bash
    sudo yum install nginx -y
    # 或者使用 dnf
    sudo dnf install nginx -y

    包管理器现在会从 Nginx 官方仓库下载并安装最新版本的 Nginx。

  4. 验证安装:
    bash
    sudo systemctl start nginx
    sudo systemctl status nginx
    sudo systemctl enable nginx
    nginx -v # 查看安装的Nginx版本

总结: 使用包管理器安装 Nginx 是最推荐的方式,尤其对于初学者和不需要特定模块的用户。从发行版仓库安装最简单,从官方仓库安装可以获得最新版本。

第三部分:从源代码编译安装 Nginx

从源代码编译安装 Nginx 提供了最大的灵活性和控制权。您可以选择要包含或排除的模块,应用补丁,以及针对您的系统进行优化。这种方法更适合有经验的用户或需要高度定制环境的场景。

缺点在于:
* 过程复杂: 需要手动处理依赖、配置、编译和安装步骤。
* 维护繁琐: 更新 Nginx 需要重复编译安装过程。
* 依赖管理: 需要手动安装所有必要的构建依赖库。
* 服务集成: 需要手动创建 systemd 或 init 脚本来管理 Nginx 服务。

尽管如此,了解如何从源代码编译 Nginx 是非常有价值的。

步骤 3.1:安装构建依赖

编译 Nginx 需要一些开发工具和库文件。主要的依赖包括:
* GCC (GNU Compiler Collection): 编译 C/C++ 代码。
* Make: 构建工具。
* PCRE (Perl Compatible Regular Expressions): 用于 Nginx 中的正则表达式支持,如 location 指令。
* zlib: 用于 HTTP 头部压缩。
* OpenSSL: 用于 SSL/TLS 加密连接支持(HTTPS)。

安装这些依赖的命令因发行版而异:

  • 对于基于 Debian 的系统 (如 Ubuntu):
    bash
    sudo apt update
    sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev wget curl -y

    • build-essential: 包含 gcc, g++, make 等基本构建工具。
    • libpcre3, libpcre3-dev: PCRE 库及其开发文件。
    • zlib1g, zlib1g-dev: zlib 库及其开发文件。
    • libssl-dev: OpenSSL 开发文件。
    • wget, curl: 用于下载源文件。
  • 对于基于 RHEL 的系统 (如 CentOS, Fedora, AlmaLinux, Rocky Linux):
    bash
    sudo yum update -y
    sudo yum groupinstall "Development Tools" -y
    sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel wget curl -y
    # 或者使用 dnf
    # sudo dnf update -y
    # sudo dnf groupinstall "Development Tools" -y
    # sudo dnf install pcre pcre-devel zlib zlib-devel openssl openssl-devel wget curl -y

    • Development Tools: 包含 gcc, make 等工具组。
    • pcre, pcre-devel: PCRE 库及其开发文件。
    • zlib, zlib-devel: zlib 库及其开发文件。
    • openssl, openssl-devel: OpenSSL 库及其开发文件。

步骤 3.2:下载 Nginx 源代码

访问 Nginx 官方网站 (https://nginx.org/download/) 获取最新稳定版或主线版的源代码下载链接。通常是一个 .tar.gz 格式的压缩包。

使用 wgetcurl 下载到服务器:
“`bash

以稳定版本为例,请替换为实际的下载链接

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

或者下载主线版本

wget https://nginx.org/download/nginx-1.25.3.tar.gz # 请查阅官网获取最新版本

下载完成后,解压压缩包:bash
tar -zxvf nginx-1.24.0.tar.gz

进入解压后的目录

cd nginx-1.24.0
“`

步骤 3.3:配置编译选项

在源代码目录下,运行 ./configure 脚本来配置编译选项。这是最关键的一步,您在这里指定 Nginx 的安装路径、启用/禁用模块以及其他各种设置。

./configure 脚本有很多选项。以下是一些常用的选项及其解释:

  • --prefix=/usr/local/nginx: 指定 Nginx 的安装目录。默认是 /usr/local/nginx
  • --sbin-path=/usr/local/nginx/sbin/nginx: 指定 Nginx 可执行文件的路径。
  • --conf-path=/usr/local/nginx/conf/nginx.conf: 指定主配置文件路径。
  • --error-log-path=/usr/local/nginx/logs/error.log: 指定错误日志路径。
  • --http-log-path=/usr/local/nginx/logs/access.log: 指定访问日志路径。
  • --pid-path=/usr/local/nginx/run/nginx.pid: 指定 PID 文件路径。
  • --lock-path=/usr/local/nginx/run/nginx.lock: 指定锁文件路径。
  • --user=nginx: 指定运行 Nginx 工作进程的用户。通常建议创建一个非特权用户。
  • --group=nginx: 指定运行 Nginx 工作进程的用户组。
  • --with-pcre: 启用 PCRE 支持。
  • --with-zlib: 启用 zlib 支持。
  • --with-http_ssl_module: 启用 SSL/TLS 模块,用于 HTTPS。
  • --with-http_stub_status_module: 启用状态模块,可以查看 Nginx 的基本运行状态。
  • --with-http_realip_module: 启用 RealIP 模块,获取客户端真实 IP(用于经过代理的情况)。
  • --with-http_gzip_static_module: 启用 gzip 静态文件压缩模块。
  • --with-http_dav_module: 启用 WebDAV 模块。
  • --with-http_slice_module: 启用文件分片传输模块。
  • --with-threads: 启用线程池。
  • --with-file-aio: 启用异步文件 I/O。
  • --with-stream: 启用 TCP/UDP 代理模块。
  • --add-module=PATH: 添加第三方模块。

示例配置命令:

这个示例配置包含了一些常用的模块,并将 Nginx 安装到 /usr/local/nginx 目录下:
bash
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--pid-path=/usr/local/nginx/run/nginx.pid \
--lock-path=/usr/local/nginx/run/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_realip_module \
--with-http_gzip_static_module \
--with-http_dav_module \
--with-http_slice_module \
--with-threads \
--with-file-aio \
--with-stream \
--with-pcre \
--with-zlib

在执行 ./configure 命令之前,您可能需要创建 Nginx 运行所需的用户和组(如果不存在的话):
bash
sudo groupadd nginx
sudo useradd -r -g nginx -s /sbin/nologin -M nginx

这个命令创建了一个名为 nginx 的系统用户和组,该用户不能登录系统 (/sbin/nologin) 且不创建家目录 (-M)。

执行 ./configure 命令。如果一切顺利,它会检查系统环境和依赖,并生成 Makefile。如果出现错误,通常是缺少依赖库,请根据错误信息安装相应的 -dev-devel 包。

步骤 3.4:编译和安装

配置完成后,使用 make 命令编译 Nginx:
bash
make

这个过程可能需要一些时间,取决于您的服务器性能。

编译成功后,使用 make install 命令进行安装:
bash
sudo make install

这个命令会将 Nginx 可执行文件、配置文件、man 手册页等复制到 --prefix 指定的目录下(例如 /usr/local/nginx)。

步骤 3.5:创建 Systemd 服务文件

为了方便管理 Nginx 服务(启动、停止、重启、重载),建议创建一个 systemd unit 文件。

创建一个名为 nginx.service 的文件在 /etc/systemd/system/ 目录下:
bash
sudo nano /etc/systemd/system/nginx.service

粘贴以下内容(请根据您的安装路径 /usr/local/nginx 进行调整):

“`ini
[Unit]
Description=nginx – high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -q -g ‘daemon on; master_process on;’
ExecStart=/usr/local/nginx/sbin/nginx -g ‘daemon on; master_process on;’
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
``
*
Description: 服务的描述。
*
Documentation: 服务的文档链接。
*
After=network.target: 指定服务在网络启动后启动。
*
Type=forking: 指定服务类型为 fork 进程。
*
PIDFile: 指定 Nginx 的 PID 文件路径,systemd 用它来跟踪主进程。
*
ExecStartPre: 在启动服务前执行的命令,这里用于测试 Nginx 配置的正确性。-q选项使输出更简洁。-g ‘daemon on; master_process on;’选项是 Nginx 推荐的在 systemd 环境下运行时的方式,确保主进程作为 daemon 运行且 master process 开启。
*
ExecStart: 启动 Nginx 服务的命令。
*
ExecReload: 重载 Nginx 配置的命令。
*
ExecStop: 平滑停止 Nginx 服务的命令。
*
PrivateTmp=true: 为服务提供一个私有的 /tmp 目录,增强安全性。
*
WantedBy=multi-user.target`: 指定服务应该在多用户模式下启动。

保存并关闭文件。

步骤 3.6:启用并启动 Nginx 服务

重新加载 systemd 管理器配置,以便识别新的服务文件:
bash
sudo systemctl daemon-reload

启用 Nginx 服务,使其在开机时自动启动:
bash
sudo systemctl enable nginx

启动 Nginx 服务:
bash
sudo systemctl start nginx

检查服务状态:
bash
sudo systemctl status nginx

您应该看到服务处于 “active (running)” 状态。

至此,您已经成功从源代码编译并安装了 Nginx。

第四部分:验证 Nginx 安装

无论是通过包管理器还是源代码安装,验证安装是否成功并能正常访问是下一步。

  1. 检查 Nginx 进程:
    使用 ps 命令查看 Nginx 进程是否在运行:
    bash
    ps aux | grep nginx

    您应该看到至少一个 Nginx 主进程 (master process) 和一个或多个工作进程 (worker process) 在运行。

  2. 检查 Nginx 版本:
    运行 Nginx 可执行文件并带上 -V 参数可以查看详细的版本信息和编译时使用的配置选项(这对于源代码安装尤其有用)。

    • 包管理器安装:
      bash
      nginx -V

      如果找不到 nginx 命令,可能需要添加 Nginx 可执行文件的路径到系统的 PATH 环境变量中,或者使用其绝对路径(如 /usr/sbin/nginx)。
    • 源代码安装:
      bash
      /usr/local/nginx/sbin/nginx -V

      请根据您的 --sbin-path 调整命令。

    输出会包含版本号、构建信息以及所有启用的模块列表。

  3. 通过浏览器访问:
    默认情况下,Nginx 会监听 80 端口(HTTP)。打开您的 Web 浏览器,输入您的服务器的 IP 地址或域名。

    如果您看到一个显示 “Welcome to nginx!” 字样的默认页面,说明 Nginx 已经成功安装并正在运行。

    如果您无法从外部访问服务器 IP:
    这通常是由于防火墙阻止了 80 端口的访问。请参考下一节配置防火墙。

第五部分:配置防火墙

为了让外部用户能够访问您的 Nginx Web 服务器,您需要在服务器的防火墙中开放 HTTP (80) 和 HTTPS (443) 端口。

以下是针对常见的防火墙工具 ufw (Ubuntu/Debian) 和 firewalld (RHEL/CentOS/Fedora/AlmaLinux/Rocky Linux) 的配置方法。

使用 ufw (Uncomplicated Firewall)

ufw 在 Ubuntu 和 Debian 系统中非常常用。

  1. 检查 ufw 状态:
    bash
    sudo ufw status

    如果防火墙处于非活动状态 (inactive),您可能需要启用它:sudo ufw enable (启用前请确保您已经开放了 SSH 端口 22,以免自己被锁在外面:sudo ufw allow ssh)。

  2. 允许 Nginx 流量:
    ufw 通常自带 Nginx 的应用配置文件,可以方便地按服务名称开放端口。

    • 允许 HTTP (80) 和 HTTPS (443):
      bash
      sudo ufw allow 'Nginx Full'
    • 只允许 HTTP (80):
      bash
      sudo ufw allow 'Nginx HTTP'
    • 只允许 HTTPS (443):
      bash
      sudo ufw allow 'Nginx HTTPS'

      选择适合您需求的规则执行。
  3. 重载 ufw 规则:
    bash
    sudo ufw reload

  4. 再次检查 ufw 状态:
    bash
    sudo ufw status

    您应该看到 Nginx 相关的端口规则已经被允许。

使用 firewalld

firewalld 在 RHEL 及其衍生版中是默认的防火墙管理工具。

  1. 检查 firewalld 状态:
    bash
    sudo systemctl status firewalld

    如果防火墙处于非活动状态 (inactive),您可能需要启用它:sudo systemctl start firewalld 并设置开机自启:sudo systemctl enable firewalld

  2. 允许 HTTP 和 HTTPS 服务:
    firewalld 允许您按服务名称(如 httphttps)开放端口。

    • 允许 HTTP (80):
      bash
      sudo firewall-cmd --permanent --add-service=http
    • 允许 HTTPS (443):
      bash
      sudo firewall-cmd --permanent --add-service=https

      --permanent 标志表示规则在防火墙重启后仍然有效。
  3. 重载 firewalld 规则:
    bash
    sudo firewall-cmd --reload

    重载操作会使 --permanent 添加的规则生效。

  4. 检查 firewalld 规则:
    bash
    sudo firewall-cmd --list-all

    在输出的服务列表中,您应该能看到 http 和/或 https

配置完防火墙后,再次尝试从浏览器访问服务器 IP 地址,现在应该可以看到 “Welcome to nginx!” 页面了。

第六部分:Nginx 配置文件结构简介

成功安装并启动 Nginx 后,了解其配置文件结构对于后续的配置和管理至关重要。

通过包管理器安装的 Nginx 配置文件通常位于 /etc/nginx/ 目录下。从源代码安装的默认在 --conf-path 指定的路径(如 /usr/local/nginx/conf/)。

主要的配置文件包括:

  1. nginx.conf: 这是 Nginx 的主配置文件。它包含了全局设置、HTTP 服务器块的定义、邮件代理或流代理的定义等。它通常会通过 include 指令包含其他配置文件,以保持主文件的整洁。

  2. conf.d/ 目录: 这个目录通常包含额外的 .conf 文件,这些文件通过 nginx.conf 中的 include /etc/nginx/conf.d/*.conf; (或类似路径) 指令加载。这是一个存放独立配置片段的好地方,例如为不同的网站或服务创建单独的配置块。

  3. sites-available/sites-enabled/ 目录 (主要在 Debian/Ubuntu 系统中):

    • sites-available/: 存放所有可用的网站或应用配置文件的目录。您可以在这里创建和编辑您的站点配置文件,但它们不会被 Nginx 加载,除非被链接到 sites-enabled/ 目录。
    • sites-enabled/: 存放当前启用的网站配置文件的目录。nginx.conf 通常通过 include /etc/nginx/sites-enabled/*; 指令加载这个目录下的所有配置文件。要启用一个站点,只需在 sites-available/ 中创建配置文件,然后使用软链接(symlink)将其链接到 sites-enabled/ 目录。例如:
      bash
      # 创建一个链接启用站点 example.conf
      sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/
      # 移除链接禁用站点
      # sudo rm /etc/nginx/sites-enabled/example.conf

      这种结构使得启用和禁用网站变得非常方便,只需创建或删除软链接并重载 Nginx 配置即可。

Nginx 配置语法:

Nginx 配置文件使用特定的语法:
* 配置指令以分号 ; 结尾。
* 指令可以分组到称为“块”的上下文中使用大括号 {} 包围。常见的块包括 events, http, server, location, mail, stream 等。
* server 块定义了一个虚拟主机,通常通过监听的端口和服务器名称 (server_name) 来区分不同的站点。
* location 块定义了如何处理特定 URL 或路径的请求。
* 井号 # 开头的行是注释。

测试配置和重载:

在修改 Nginx 配置文件后,务必先测试配置文件的语法是否正确,以避免重启服务时出错:
bash
sudo nginx -t

如果使用 systemd,也可以通过 ExecStartPre 中定义的命令来测试:
bash
sudo systemctl status nginx

或者直接运行测试命令(根据您的安装路径调整):
bash
/usr/local/nginx/sbin/nginx -t

如果测试通过,您会看到类似 “syntax is ok”, “test is successful” 的输出。

然后,重载 Nginx 配置以使更改生效,而无需停止服务(这不会中断正在处理的请求):
“`bash
sudo systemctl reload nginx

或者直接使用nginx命令(根据您的安装路径调整)

sudo /usr/local/nginx/sbin/nginx -s reload

“`
如果配置测试失败,Nginx 将不会重载配置,并会报告错误信息。

第七部分:常见问题及故障排除

在安装和配置 Nginx 过程中,可能会遇到一些问题。以下是一些常见问题及其解决方法:

  1. Nginx 服务无法启动:

    • 检查配置文件: 这是最常见的原因。使用 sudo nginx -t (或您的安装路径下的 nginx -t) 检查配置文件是否有语法错误或路径问题。根据错误信息修改配置文件。
    • 检查日志文件: Nginx 错误日志通常位于 /var/log/nginx/error.log (包管理器安装) 或您的 --error-log-path 指定的路径。查看日志文件可以获取更详细的错误原因。
    • 端口冲突: 确保 Nginx 监听的端口(默认 80 和 443)没有被其他程序占用。可以使用 sudo netstat -tulnp | grep 80sudo ss -tulnp | grep 80 检查。如果端口被占用,停止占用端口的程序或修改 Nginx 监听的端口。
    • 权限问题: 检查 Nginx 运行用户对日志目录、配置文件目录和网站根目录是否有读写权限。
  2. 无法通过浏览器访问 Nginx 页面:

    • 检查 Nginx 服务是否运行: 使用 sudo systemctl status nginx 确认服务处于 active (running) 状态。
    • 检查防火墙: 确保您已经开放了 80 (HTTP) 和 433 (HTTPS) 端口。参考本文的防火墙配置章节。
    • 检查服务器 IP 地址或域名: 确保您在浏览器中输入的是正确的服务器 IP 地址或域名。如果您使用了域名,请确认 DNS 解析是否正确指向您的服务器 IP。
    • 网络问题: 检查服务器的网络连接是否正常,以及您的客户端是否能够访问服务器所在的网络。
  3. 修改配置后不生效:

    • 测试配置: 确保在修改配置后使用 sudo nginx -t 进行了测试,并且测试通过。
    • 重载配置: 确保您执行了正确的重载命令 sudo systemctl reload nginxsudo nginx -s reload,而不是重启 (restart)。重载是使配置生效而不断开现有连接的方式。
  4. 源代码编译时缺少依赖:

    • ./configure 步骤失败并报告缺少某个库:根据错误信息,确定缺少的库的名称(通常会提示类似 ... library not found... requires some library)。然后使用您的包管理器搜索并安装相应的开发包(通常以 -dev-devel 结尾)。例如,如果缺少 PCRE,安装 libpcre3-devpcre-devel。安装依赖后,重新运行 ./configure
  5. 默认欢迎页不显示,出现 403 Forbidden 错误:

    • 这通常是文件权限问题。检查 Nginx 工作进程用户(通常是 nginx 用户)对网站根目录及其内部文件的读取权限。确保目录有执行权限,文件有读取权限。例如,使用 ls -l /usr/share/nginx/html/index.html 查看文件权限。

第八部分:后续学习方向

成功安装 Nginx 只是开始。为了充分利用 Nginx 的强大功能,您可以进一步学习:

  • 配置虚拟主机 (Server Blocks): 学习如何在一个 Nginx 实例上托管多个网站。
  • 配置 SSL/TLS (HTTPS): 为您的网站启用加密连接,保障数据安全。可以使用 Let’s Encrypt 免费获取 SSL 证书。
  • 配置反向代理和负载均衡: 将 Nginx 作为前端代理,将请求转发给后端的应用服务器(如 Apache, Node.js, Python 应用等),并实现负载均衡以提高性能和可用性。
  • 配置缓存: 使用 Nginx 的缓存功能加速静态资源或动态内容的访问。
  • 静态文件服务优化: 配置浏览器缓存、gzip 压缩等。
  • 安全性加固: 限制访问、防止 DDoS 攻击、配置安全头部等。
  • 了解 Nginx 模块: 学习 Nginx 内置模块和第三方模块的使用,扩展 Nginx 的功能。
  • 监控 Nginx 性能: 使用 stub_status 模块或其他监控工具。

结论

本文详细介绍了在 Linux 环境下安装 Nginx 的两种主要方法:通过包管理器安装和从源代码编译安装。我们涵盖了安装前的准备工作、不同发行版下的具体安装步骤、安装后的验证、防火墙配置、Nginx 配置文件结构简介以及常见的故障排除。

通过包管理器安装是大多数用户的推荐选择,它简单易行且易于维护。从源代码编译则提供了更高的灵活性,适合需要高度定制或最新功能的用户。

无论您选择哪种安装方式,Nginx 都是一个强大而灵活的工具,为您的 Web 服务提供高性能和稳定性。希望本指南能帮助您顺利地在 Linux 系统上安装并开始使用 Nginx。祝您使用愉快!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部