杰瑞科技汇

centos安装nginx教程

本教程适用于 CentOS 7CentOS 8/Stream 系统。

centos安装nginx教程-图1
(图片来源网络,侵删)

目录

  1. 准备工作
  2. 使用 EPEL 仓库安装 (推荐新手)
    • 安装 EPEL 仓库
    • 安装 Nginx
    • 启动并设置开机自启
    • 验证安装
  3. 从 Nginx 官方源安装 (推荐生产环境)
    • 安装 EPEL 和 Yum Utils 仓库
    • 添加 Nginx 官方 Yum 仓库
    • 安装 Nginx
    • 启动并设置开机自启
    • 验证安装
  4. Nginx 基本配置
    • 配置文件结构
    • 修改默认欢迎页面
    • 配置虚拟主机 (一个服务器,多个网站)
  5. Nginx 常用操作
    • 启动 Nginx
    • 停止 Nginx
    • 重载 Nginx (平滑重启)
    • 查看 Nginx 状态
    • 查看 Nginx 错误日志
  6. 配置防火墙

准备工作

在开始之前,请确保你已经:

  • 一台已经安装好 CentOS 7/8/Stream 的服务器(推荐最小化安装)。
  • 拥有 root 权限,或者一个可以使用 sudo 命令的用户。
  • 系统可以正常连接到互联网。

更新你的系统软件包到最新版本:

# CentOS 7
sudo yum update -y
# CentOS 8 / Stream
sudo dnf update -y

方法一:使用 EPEL 仓库安装 (推荐新手)

这是最简单、最快捷的方式,适合初学者和测试环境。

安装 EPEL 仓库

EPEL (Extra Packages for Enterprise Linux) 是一个为 RHEL 及其衍生版(如 CentOS)提供高质量额外软件包的项目。

centos安装nginx教程-图2
(图片来源网络,侵删)
# CentOS 7
sudo yum install epel-release -y
# CentOS 8 / Stream
sudo dnf install epel-release -y

安装 Nginx

你可以直接使用 yumdnf 命令安装 Nginx。

# CentOS 7
sudo yum install nginx -y
# CentOS 8 / Stream
sudo dnf install nginx -y

启动并设置开机自启

安装完成后,启动 Nginx 服务,并设置为开机自动启动。

# 启动 Nginx
sudo systemctl start nginx
# 设置开机自启
sudo systemctl enable nginx

验证安装

检查 Nginx 服务的运行状态。

sudo systemctl status nginx

如果看到绿色的 active (running) 字样,说明 Nginx 已经成功启动。

centos安装nginx教程-图3
(图片来源网络,侵删)

你还可以在浏览器中访问服务器的 IP 地址,应该能看到 Nginx 的默认欢迎页面。

# 查看你的服务器 IP 地址
ip addr

在浏览器中输入 http://<你的服务器IP地址>,应该会看到如下页面:


方法二:从 Nginx 官方源安装 (推荐生产环境)

这种方法可以确保你安装的是最新的稳定版 Nginx,并且可以方便地升级到最新的安全补丁。

安装 EPEL 和 Yum Utils 仓库

# CentOS 7
sudo yum install epel-release yum-utils -y
# CentOS 8 / Stream
sudo dnf install epel-release dnf-utils -y

添加 Nginx 官方 Yum 仓库

使用 yum-config-manager 工具添加 Nginx 官方仓库。

# 添加 Nginx 官方仓库 (这里我们添加的是稳定版 stable)
sudo yum-config-manager --add-repo http://nginx.org/packages/centos/$(rpm -E %{?dist}|cut -d. -f2)/$(uname -i)/

重要: 官方仓库的 GPG 密钥可能不被系统信任,我们需要手动导入它。

# 导入 GPG 密钥
rpm --import http://nginx.org/keys/nginx_signing.key

为了避免每次都提示确认,可以禁用该仓库的 GPG 检查(不推荐,但方便):

# 编辑.repo文件
sudo vi /etc/yum.repos.d/nginx.repo
# 找到 [nginx-stable] 部分,将 enabled=1 改为 enabled=1,并在下面添加 gpgcheck=0
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

安全提示: gpgcheck=0 会禁用 GPG 密钥检查,虽然方便,但降低了安全性,在生产环境中,建议保留 gpgcheck=1 并正确导入密钥。

安装 Nginx

从官方源安装 Nginx。

# CentOS 7
sudo yum install nginx -y
# CentOS 8 / Stream
sudo dnf install nginx -y

启动并设置开机自启

与方法一相同。

sudo systemctl start nginx
sudo systemctl enable nginx

验证安装

与方法一相同。

sudo systemctl status nginx

Nginx 基本配置

了解 Nginx 的配置文件结构非常重要。

配置文件结构

  • 主配置文件: /etc/nginx/nginx.conf
  • 网站配置文件目录: /etc/nginx/conf.d/ (所有以 .conf 结尾的文件都会被自动加载)
  • 默认网站配置: /etc/nginx/conf.d/default.conf
  • 网站根目录: /usr/share/nginx/html/ (存放网站文件的地方)
  • 错误日志: /var/log/nginx/error.log
  • 访问日志: /var/log/nginx/access.log

修改默认欢迎页面

让我们修改默认页面,看看效果。

  1. 备份原始页面:

    sudo cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.bak
  2. 创建一个新的 index.html 文件:

    sudo vi /usr/share/nginx/html/index.html

    在文件中输入以下内容:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Welcome to Nginx on CentOS!</title>
    </head>
    <body>
        <h1>Hello from Nginx!</h1>
        <p>If you see this page, the nginx web server is successfully installed and working.</p>
    </body>
    </html>

    保存并退出 (在 vi 中按 ESC,然后输入 wq 并回车)。

  3. 刷新浏览器,你应该能看到新页面。

配置虚拟主机 (一个服务器,多个网站)

假设我们要为域名 example.comblog.example.com 创建两个网站。

  1. 创建网站目录和文件

    # 为 example.com 创建目录和首页
    sudo mkdir -p /var/www/example.com/html
    echo "Welcome to Example.com" | sudo tee /var/www/example.com/html/index.html
    # 为 blog.example.com 创建目录和首页
    sudo mkdir -p /var/www/blog.example.com/html
    echo "Welcome to the Blog" | sudo tee /var/www/blog.example.com/html/index.html
  2. 创建虚拟主机配置文件/etc/nginx/conf.d/ 目录下创建新的配置文件。

    sudo vi /etc/nginx/conf.d/example.com.conf
    server {
        listen 80;
        server_name example.com www.example.com;
        root /var/www/example.com/html;
        index index.html;
        location / {
            try_files $uri $uri/ =404;
        }
    }

    保存并退出。

    再为 blog.example.com 创建一个:

    sudo vi /etc/nginx/conf.d/blog.example.com.conf
    server {
        listen 80;
        server_name blog.example.com www.blog.example.com;
        root /var/www/blog.example.com/html;
        index index.html;
        location / {
            try_files $uri $uri/ =404;
        }
    }

    保存并退出。

  3. 测试配置并重载 Nginx 在重载服务前,务必测试配置文件是否有语法错误。

    # 测试配置
    sudo nginx -t
    # 如果看到 "syntax is ok" 和 "test is successful",则重载
    sudo systemctl reload nginx

    重载 (reload) 会让 Nginx 平滑地应用新配置,而不会中断现有的连接。

  4. 配置本地 hosts 文件进行测试 (如果你没有真实域名) 在你的本地电脑上(不是服务器),编辑 hosts 文件(Windows 在 C:\Windows\System32\drivers\etc\hosts,macOS/Linux 在 /etc/hosts),添加以下行:

    <你的服务器IP地址> example.com
    <你的服务器IP地址> blog.example.com

    然后在浏览器中访问 http://example.comhttp://blog.example.com,应该能看到不同的内容。


Nginx 常用操作

命令 描述
sudo systemctl start nginx 启动 Nginx 服务
sudo systemctl stop nginx 停止 Nginx 服务
sudo systemctl restart nginx 重启 Nginx 服务 (会中断所有连接)
sudo systemctl reload nginx 平滑重载 Nginx (推荐),读取新配置并启动新工作进程,优雅地关闭旧工作进程。
sudo systemctl status nginx 查看 Nginx 运行状态
sudo systemctl enable nginx 设置 Nginx 开机自启
sudo systemctl disable nginx 禁止 Nginx 开机自启
sudo nginx -t 测试 Nginx 配置文件语法,修改配置后必用!
sudo journalctl -u nginx 查看 Nginx 的系统日志 (journal)
sudo tail -f /var/log/nginx/error.log 实时查看 Nginx 错误日志

配置防火墙

默认情况下,CentOS 的防火墙 (firewalld) 会阻止外部访问 Nginx 的 80 (HTTP) 和 443 (HTTPS) 端口,你需要手动放行它们。

# 永久放行 HTTP (80) 端口
sudo firewall-cmd --permanent --add-service=http
# 永久放行 HTTPS (443) 端口
sudo firewall-cmd --permanent --add-service=https
# 重新加载防火墙规则使配置生效
sudo firewall-cmd --reload

你应该可以从任何地方访问你的 Nginx 服务了。


恭喜!你已经成功在 CentOS 上安装并配置了 Nginx。

  • 新手入门:使用 方法一 是最快的方式。
  • 生产环境:强烈推荐使用 方法二,因为它能让你轻松获得最新的稳定版和安全更新。
  • 核心概念:理解配置文件结构 (/etc/nginx/) 和虚拟主机 (server 块) 是管理 Nginx 的基础。
  • 安全习惯:修改配置后,始终先用 nginx -t 测试,然后用 systemctl reload 平滑重载。
  • 对外访问:不要忘记配置防火墙,否则外网无法访问你的网站。

下一步,你可以学习如何配置 SSL/TLS 证书 (使用 Let's Encrypt)、配置反向代理、配置负载均衡等更高级的用法。

分享:
扫描分享到社交APP
上一篇
下一篇