如何在CentOS8上安装Nginx

来自菜鸟教程
跳转至:导航、​搜索

介绍

Nginx 是世界上最受欢迎的网络服务器之一,负责托管互联网上一些最大和最受欢迎的网站。 在大多数情况下,它比 Apache 对资源更友好,可以用作 Web 服务器或反向代理。

在本指南中,我们将讨论如何在 CentOS 8 服务器上安装 Nginx。

先决条件

要遵循本指南,您需要以具有 sudo 权限的非 root 用户身份访问 CentOS 8 服务器,并在服务器上安装活动防火墙。 要进行此设置,您可以按照我们的 CentOS 8 初始服务器设置指南进行操作。

第 1 步 — 安装 Nginx Web 服务器

为了安装 Nginx,我们将使用 dnf 包管理器,它是 CentOS 8 上新的默认包管理器。

安装 nginx 包:

sudo dnf install nginx

出现提示时,输入 y 以确认您要安装 nginx。 之后,dnf 将安装 Nginx 和任何所需的依赖项到您的服务器。

安装完成后,运行以下命令启用并启动服务器:

sudo systemctl enable nginx
sudo systemctl start nginx

这将使 Nginx 在系统启动时启动。

第 2 步 — 调整防火墙规则

如果您按照我们的 CentOS 8 初始服务器设置指南中的说明启用了 firewalld 防火墙,您需要调整防火墙设置以允许 Nginx Web 服务器上的外部连接,默认在端口 80 上运行。

运行以下命令以永久启用端口 80 上的 HTTP 连接:

sudo firewall-cmd --permanent --add-service=http

要验证 http 防火墙服务是否已正确添加,您可以运行:

sudo firewall-cmd --permanent --list-all

你会看到这样的输出:

Outputpublic
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: cockpit dhcpv6-client http ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

要应用更改,您需要重新加载防火墙服务:

sudo firewall-cmd --reload

现在您的 Nginx 服务器已完全安装好,可供外部访问者访问。

第 3 步 — 检查您的 Web 服务器

您现在可以通过从 Web 浏览器访问服务器的公共 IP 地址或域名来测试您的 Nginx Web 服务器是否已启动并运行。

注意:如果您使用 DigitalOcean 作为您的 DNS 托管服务提供商,您可以查看我们的 产品文档 以获取有关如何设置新域名并将其指向您的服务器的详细说明.


如果您没有指向您的服务器的域名并且您不知道您的服务器的公共 IP 地址,您可以通过运行以下命令找到它:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

这将打印出一些 IP 地址。 您可以在您的网络浏览器中依次尝试它们中的每一个。

作为替代方案,您可以检查从 Internet 上的其他位置查看的 IP 地址是可访问的:

curl -4 icanhazip.com

在您的网络浏览器中输入您收到的地址,它将带您进入 Nginx 的默认登录页面:

如果您看到此页面,那么您的 Web 服务器现在已正确安装。

第 4 步 - 管理 Nginx 进程

现在您的 Web 服务器已启动并运行,我们将回顾如何通过 systemctl 管理 Nginx 服务。

每当您需要停止 Web 服务器时,您可以使用:

sudo systemctl stop nginx

要在 Web 服务器停止时启动它,请键入:

sudo systemctl start nginx

要停止然后重新启动服务,您可以使用:

sudo systemctl restart nginx

Nginx 还可以在不断开连接的情况下重新加载配置更改。 为此,请键入:

sudo systemctl reload nginx

默认情况下,Nginx 配置为在服务器启动时自动启动。 如果这不是您想要的,您可以通过键入以下内容来禁用此行为:

sudo systemctl disable nginx

要重新启用该服务并让 Nginx 在启动时再次启动,您可以使用:

sudo systemctl enable nginx

第 5 步 - 熟悉重要的 Nginx 文件和目录

现在您已经知道如何管理 Nginx 服务,您应该花几分钟时间熟悉一些重要的目录和文件。

内容

  • /usr/share/nginx/html:实际的 Web 内容,默认情况下仅包含您之前看到的默认 Nginx 页面,从 /usr/share/nginx/html 目录提供。 这可以通过更改 Nginx 配置文件来更改。

服务器配置

  • /etc/nginx:Nginx 配置目录。 所有 Nginx 配置文件都驻留在此处。
  • /etc/nginx/nginx.conf:主要的 Nginx 配置文件。 可以对其进行修改以更改 Nginx 全局配置。
  • /etc/nginx/conf.d/:此目录包含服务器块配置文件,您可以在其中定义托管在 Nginx 中的网站。 一种典型的方法是将每个网站放在一个单独的文件中,该文件以网站的域名命名,例如 your_domain.conf

服务器日志

  • /var/log/nginx/access.log:对您的 Web 服务器的每个请求都记录在此日志文件中,除非 Nginx 配置为不这样做。
  • /var/log/nginx/error.log:任何 Nginx 错误都将记录在此日志中。

第 6 步 – 设置服务器块(可选)

如果您想在同一个 Nginx Web 服务器中托管多个网站,您需要设置 服务器块 。 Nginx 服务器块的工作方式与 Apache 虚拟主机类似,允许单个服务器响应多个域名并为每个域名提供不同的内容。 在 CentOS 8 上,服务器块定义在位于 /etc/nginx/conf.d.conf 文件中。

我们将为一个名为 your_domain 的域设置一个服务器块。 要了解有关使用 DigitalOcean 设置域名的更多信息,请参阅我们的 DigitalOcean DNS 简介。

默认情况下,CentOS 8 上的 Nginx 配置为从位于 /usr/share/nginx/html 的目录中提供文档。 虽然这适用于单个站点,但如果您托管多个站点,它可能会变得难以管理。 我们将在 /var/www 中为 your_domain 网站创建一个目录结构,而不是修改 /usr/share/nginx/html,而将 /usr/share/nginx/html 保留为默认目录如果客户端请求与任何其他站点不匹配,则提供。

如下为 your_domain 创建目录,使用 -p 标志创建任何必要的父目录:

sudo mkdir -p /var/www/your_domain/html

接下来,使用 $USER 环境变量分配目录的所有权,它应该引用您当前的系统用户:

sudo chown -R $USER:$USER /var/www/your_domain/html

接下来,我们将创建一个示例 index.html 页面来测试服务器块配置。 CentOS 8 自带的默认文本编辑器是 vivi 是一个非常强大的文本编辑器,但对于缺乏使用经验的用户来说可能有些迟钝。 您可能需要安装更用户友好的编辑器,例如 nano 以方便在 CentOS 8 服务器上编辑配置文件:

sudo dnf install nano

现在您可以使用 nano 创建示例 index.html 文件:

nano /var/www/your_domain/html/index.html

在该文件中,添加以下 HTML 代码:

/var/www/your_domain/html/index.html

<html>
    <head>
        <title>Welcome to your_domain</title>
    </head>
    <body>
        <h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
    </body>
</html>

完成后保存并关闭文件。 如果您使用 nano,您可以按 CTRL + XY,然后按 ENTER 来完成。

为了让 Nginx 提供这些内容,我们需要使用指向我们自定义 Web 根目录的正确指令创建一个服务器块。 我们将在 /etc/nginx/conf.d/your_domain.conf 创建一个新的服务器块:

sudo nano /etc/nginx/conf.d/your_domain.conf

粘贴到以下配置块中:

/etc/nginx/conf.d/your_domain.conf

server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

        location / {
                try_files $uri $uri/ =404;
        }
}

完成编辑内容后保存并关闭文件。

要确保任何 Nginx 文件中都没有语法错误,请运行:

sudo nginx -t

如果没有任何问题,您将看到以下输出:

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

配置测试通过后,重新启动 Nginx 以启用您的更改:

sudo systemctl restart nginx

在从浏览器测试更改之前,您需要更新服务器的 SELinux 安全上下文,以便允许 Nginx 提供来自 /var/www/your_domain 目录的内容。

以下命令将允许您的自定义文档根作为 HTTP 内容提供:

chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/

现在您可以通过导航到 http://your_domain 来测试您的自定义域设置,您将在其中看到如下内容:

此页面正在呈现我们在为服务器块创建的自定义文档根中定义的 HTML 代码。 如果您能够看到此页面,则表示您的 Nginx 服务器已正确配置为为您的域提供服务。

结论

在本指南中,我们了解了如何安装和设置 Nginx,这是一种高性能 Web 服务器和反向代理。 我们回顾了如何管理在您的服务器上运行的 Nginx 服务,以及 Nginx 用于存储配置文件、内容和日志的主要目录是什么。

从这里开始,您可以选择许多内容类型和您可能希望在 Web 服务器中托管的网站中使用的技术。