介绍
Nginx是世界上最受欢迎的Web服务器之一,负责托管一些互联网上最大和最高流量的站点。它是一个轻量级选择,可用作Web服务器或反向代理。
在本指南中,您将学习如何在Rocky Linux 9服务器上安装Nginx,调整防火墙,管理Nginx进程,并设置服务器块,以从单个服务器托管多个域名。
先决条件
在开始本指南之前,您应该在服务器上配置一个常规的非根用户,并具有sudo特权。您可以按照我们的Rocky Linux 9的初始服务器设置指南学习如何配置常规用户帐户。
此外,完成本教程的最后几个步骤之前,您可能还希望注册一个域名。有关使用DigitalOcean设置域名的更多信息,请参阅我们的DigitalOcean DNS简介。
当您有可用帐户时,请以非根用户身份登录开始。
步骤 1 – 安装 Nginx
由于 Nginx 可在 Rocky 的默认软件仓库中找到,您可以使用 dnf
软件包管理器的单个命令来安装它。
使用 dnf install
安装 nginx
软件包:
- sudo dnf install nginx
在提示时,输入 y
以确认您要安装 nginx
。之后,dnf
将在您的服务器上安装 Nginx 及其所有必需的依赖项。
安装完成后,运行以下命令启用并启动 Web 服务器:
- sudo systemctl enable nginx
- sudo systemctl start nginx
这将使 Nginx 在服务器重新启动时自动重启。您的新 Web 服务器现在应该已经运行起来了,但在测试之前,您可能需要更改防火墙配置。
步骤 2 – 调整防火墙
如果您在 Rocky Linux 9 的初始服务器设置指南中启用了 firewalld
防火墙,您需要调整防火墙设置,以允许默认情况下在端口 80
上运行的 Nginx Web 服务器接受外部连接。
运行以下命令来永久启用端口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
您的Web服务器现在应该对外部访客可访问:
第三步 – 检查您的Web服务器
此时,您的Web服务器应该已经启动。
您可以使用systemctl status
命令确保服务正在运行:
- systemctl status nginx
Output● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-09-14 21:03:46 UTC; 7min ago
Process: 18384 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 18385 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 18386 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Main PID: 18387 (nginx)
Tasks: 3 (limit: 10938)
Memory: 2.8M
CPU: 43ms
CGroup: /system.slice/nginx.service
├─18387 "nginx: master process /usr/sbin/nginx"
├─18388 "nginx: worker process"
└─18389 "nginx: worker process"
通过此输出确认,服务已成功启动。但是,测试的最佳方法是实际请求Nginx的页面。
您可以访问默认的Nginx登录页面来确认软件是否正常运行,方法是转到您服务器的IP地址。如果您不知道服务器的IP地址,您可以使用icanhazip.com工具找到它,该工具将给出您从互联网上另一个位置接收到的公共IP地址:
- curl -4 icanhazip.com
当您拥有服务器的IP地址时,将其输入到浏览器的地址栏中:
http://your_server_ip
您应该收到默认的Nginx登录页面:
如果您在此页面上,您的服务器正在正确运行并且已准备好进行管理。
步骤 4 – 管理 Nginx 进程
现在您的网络服务器已经运行起来了,让我们来看一些服务管理命令。
要停止您的网络服务器,请使用 systemctl stop
:
- sudo systemctl stop nginx
要在停止状态下启动网络服务器,请使用 systemctl start
:
- sudo systemctl start nginx
要停止然后重新启动服务,请使用 systemctl restart
:
- sudo systemctl restart nginx
如果您只是在进行配置更改,Nginx 通常可以在不中断连接的情况下重新加载。要做到这一点,请使用 systemctl reload
:
- sudo systemctl reload nginx
在本教程的前面,您已经配置了 Nginx 在服务器启动时自动启动。您可以使用 systemctl disable
来禁用此行为:
- sudo systemctl disable nginx
要重新启用服务以在启动时启动,您可以键入:
- sudo systemctl enable nginx
步骤 5 – 熟悉重要的 Nginx 文件和目录
现在您已经知道如何管理 Nginx 服务了,您应该花几分钟时间熟悉一下一些重要的目录和文件。
内容
/usr/share/nginx/html
:实际的网页内容,默认情况下仅包含您之前看到的默认 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 服务器时,服务器块(类似于 Apache 中的虚拟主机)可用于组织配置细节并从单个服务器托管多个域。在 Rocky Linux 9 上,服务器块在位于 /etc/nginx/conf.d
的 .conf
文件中定义。我们将设置一个名为 your_domain
的域,但您应该将其替换为您自己的域名。
默认情况下,Rocky Linux 9 上的 Nginx 配置为从 /usr/share/nginx/html
目录中提供文档。虽然这对于单个站点效果很好,但如果您托管多个站点,这可能变得难以管理。与其修改 /usr/share/nginx/html
,您将在 /var/www
中为 your_domain 网站创建目录结构,将 /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
页面来测试服务器块配置。Rocky Linux 9 默认的文本编辑器是vi
。vi
是一个非常强大的文本编辑器,但对于缺乏经验的用户来说可能有些晦涩。您可能希望安装一个更加用户友好的编辑器,比如nano
,以便在您的Rocky Linux 9服务器上编辑配置文件:
- sudo dnf install nano
接下来,使用nano
或您喜欢的编辑器创建一个示例index.html
页面:
- nano /var/www/your_domain/html/index.html
在其中,添加以下示例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提供此内容,您需要创建一个带有指令的服务器块,该指令指向您的自定义网站根目录。在/etc/nginx/conf.d/your_domain.conf
中创建一个新的服务器块:
- sudo nano /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;
}
}
请注意,我们已经将root
配置更新为我们的新目录,并将server_name
更新为我们的域名。保存并关闭文件。
现在已启用并配置了两个服务器块,以响应基于它们的listen
和server_name
指令的请求(您可以在这里详细了解Nginx如何处理这些指令):
your_domain
:将响应对your_domain
和www.your_domain
的请求。default
:将响应在端口80上与其他两个块不匹配的任何请求。
接下来,测试以确保您的Nginx文件中没有语法错误,使用nginx -t
:
- sudo nginx -t
如果没有问题,请重新启动Nginx以启用更改:
- sudo systemctl restart nginx
在您可以从浏览器测试更改之前,您需要更新服务器的SELinux安全上下文,以允许Nginx从/var/www/your_domain
目录提供内容。
此chcon
上下文更新将允许将您的自定义文档根目录作为HTTP内容提供:
- chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/
现在,Nginx应该正在提供您的域名。您可以通过转到http://your_domain
来测试,您应该看到类似于以下内容:
结论
现在您已经安装了您的网络服务器,您有许多选择可用于提供内容的类型以及您想要使用的技术,以创建更丰富的体验。
要为您的域名设置HTTPS,并使用免费的SSL证书使用Let’s Encrypt,您应该继续如何在Rocky Linux 9上使用Let’s Encrypt保护Nginx。
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-rocky-linux-9