如何在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 自带的默认文本编辑器是 vi
。 vi
是一个非常强大的文本编辑器,但对于缺乏使用经验的用户来说可能有些迟钝。 您可能需要安装更用户友好的编辑器,例如 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 + X
、Y
,然后按 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 服务器中托管的网站中使用的技术。