介绍
Nginx是世界上最受欢迎的Web服务器之一,负责托管互联网上一些规模最大和流量最高的网站,这是一个轻量级的选择,可以作为Web服务器或反向代理。
在本指南中,您将查看如何在 Rocky Linux 9 服务器上安装 Nginx,调整防火墙,管理 Nginx 流程,并设置服务器块来从单个服务器中托管多个域。
前提条件
在您开始本指南之前,您应该有一个正常的非根用户,在您的服务器上配置了 sudo 权限. 您可以通过遵循我们的 Rocky Linux 9 初始服务器设置指南来学习如何配置常规用户帐户。
您还可以选择在完成本教程的最后步骤之前注册域名。 有关使用 DigitalOcean 设置域名的更多信息,请参阅我们的 Introduction to DigitalOcean DNS。
当你有一个帐户可用时,登录作为你的非根用户开始。
步骤1:安装 Nginx
由于 Nginx 在 Rocky 的默认存储库中可用,您可以使用单个命令安装它,使用dnf
包管理器。
安裝「nginx」包與「dnf install」:
1sudo dnf install nginx
当被提示时,输入y
来确认你想要安装nginx
。
安装完成后,运行以下命令来启用和启动 Web 服务器:
1sudo systemctl enable nginx
2sudo systemctl start nginx
您的新 Web 服务器现在应该启动并运行,但在测试之前,您可能需要对防火墙配置进行更改。
第2步:调整防火墙
如果您在 Rocky Linux 9 的初始服务器设置指南中启用了firewalld
防火墙,则需要调整防火墙设置,以便在您的 Nginx 网页服务器上允许外部连接,该服务器默认运行在端口 `80。
运行以下命令,在端口 `80 上永久启用 HTTP 连接:
1sudo firewall-cmd --permanent --add-service=http
要验证http
防火墙服务是否正确添加,您可以运行:
1sudo firewall-cmd --permanent --list-all
你会看到这样的输出:
1[secondary_label Output]
2public
3 target: default
4 icmp-block-inversion: no
5 interfaces:
6 sources:
7 services: cockpit dhcpv6-client http ssh
8 ports:
9 protocols:
10 masquerade: no
11 forward-ports:
12 source-ports:
13 icmp-blocks:
14 rich rules:
要应用这些更改,您需要重新加载防火墙服务:
1sudo firewall-cmd --reload
您的 Web 服务器现在应该可以访问外部访问者。
步骤三:检查您的Web服务器
此时,您的 Web 服务器应该在运行。
您可以使用systemctl status
命令来确保服务正在运行:
1systemctl status nginx
1[secondary_label Output]
2● nginx.service - The nginx HTTP and reverse proxy server
3 Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
4 Active: active (running) since Wed 2022-09-14 21:03:46 UTC; 7min ago
5 Process: 18384 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
6 Process: 18385 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
7 Process: 18386 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
8 Main PID: 18387 (nginx)
9 Tasks: 3 (limit: 10938)
10 Memory: 2.8M
11 CPU: 43ms
12 CGroup: /system.slice/nginx.service
13 ├─18387 "nginx: master process /usr/sbin/nginx"
14 ├─18388 "nginx: worker process"
15 └─18389 "nginx: worker process"
正如这个输出所证实的那样,该服务已经成功启动,但是,测试这一点的最佳方法是实际上请求 Nginx 的页面。
如果你不知道你的服务器的IP地址,你可以通过使用icanhazip.com工具来找到它,这将给你你的公共IP地址,如从互联网上的另一个位置收到的:
1curl -4 icanhazip.com
当您有您的服务器的IP地址时,请将其输入到您的浏览器的地址栏:
1http://your_server_ip
您应该收到默认的 Nginx 登陆页面:
如果您在这个页面上,您的服务器正在正确运行,并准备好进行管理。
第4步:管理 Nginx 流程
现在你有你的Web服务器并运行,让我们审查一些服务管理命令。
要停止您的 Web 服务器,请使用systemctl stop
:
1sudo systemctl stop nginx
要在停止时启动 Web 服务器,请使用systemctl start
:
1sudo systemctl start nginx
要停止,然后重新启动服务,请使用systemctl重新启动
:
1sudo systemctl restart nginx
如果您只是在进行配置更改, Nginx 通常可以重新加载而不会放弃连接。
1sudo systemctl reload nginx
在本教程中早些时候,您已配置 Nginx 以便在服务器启动时自动启动。
1sudo systemctl disable nginx
要重新启用服务在启动时启动,您可以键入:
1sudo systemctl enable nginx
步骤 5 – 熟悉重要的 Nginx 文件和目录
现在你知道如何管理 Nginx 服务,你应该花几分钟来熟悉一些重要的目录和文件。
内容
/usr/share/nginx/html
:实际的网页内容,默认情况下仅由您之前看到的默认 Nginx 页面组成,从/usr/share/nginx/html
目录中提供。
服务器配置
/etc/nginx
: Nginx 配置目录. 所有 Nginx 配置文件都位于此处./etc/nginx/nginx.conf
: 主要的 Nginx 配置文件. 这可以修改以改变 Nginx 全球配置./etc/nginx/conf.d/
: 此目录包含服务器块配置文件,您可以定义在 Nginx 中托管的网站。
服务器日志
/var/log/nginx/access.log
:在这个日志文件中记录到您的 Web 服务器的每一个请求,除非 Nginx 已配置为另行。
您现在应该准备好将网站配置为托管一个或多个域。
步骤 6 – 设置服务器封锁(可选)
在使用 Nginx Web 服务器时, server blocks (类似于 Apache 中的虚拟主机) 可以用来组织配置细节,并从单个服务器中托管多个域。
默认情况下,Rocky Linux 9上的Nginx配置为在/usr/share/nginx/html
的目录中服务文档。虽然这对单个网站非常有效,但如果您托管多个网站,它可能会变得无法管理。而不是修改/usr/share/nginx/html
,您将为 your_domain 网站创建一个/var/www
内的目录结构,将/usr/share/nginx/html
作为默认目录,如果客户端请求不匹配任何其他网站。
创建 your_domain 的目录如下,使用-p
旗帜创建任何必要的母目录:
1sudo mkdir -p /var/www/your_domain/html
接下来,与$USER
环境变量分配目录的所有权,该变量应参考您的当前系统用户:
1sudo chown -R $USER:$USER /var/www/your_domain/html
现在你将创建一个样本index.html
页面来测试服务器块配置. 与Rocky Linux 9一起提供的默认文本编辑器是vi
。 vi
是一个极其强大的文本编辑器,但对于缺乏经验的用户来说,它可能有点模糊。
1sudo dnf install nano
接下来,使用nano
或您最喜欢的编辑器创建一个样本index.html
页面:
1nano /var/www/your_domain/html/index.html
内部,添加以下样本HTML:
1[label /var/www/your_domain/html/index.html]
2<html>
3 <head>
4 <title>Welcome to your_domain</title>
5 </head>
6 <body>
7 <h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
8<p>This is a sample page.</p>
9 </body>
10</html>
如果你正在使用nano
,你可以保存和停止通过按CTRL + X
,然后在提示时,Y
,然后输入。
为了让 Nginx 服务这些内容,您需要创建一个服务器块,其中包含指向您的自定义 Web 根的指示。
1sudo nano /etc/nginx/conf.d/your_domain.conf
插入以下配置块:
1[label /etc/nginx/conf.d/your_domain.conf]
2server {
3 listen 80;
4 listen [::]:80;
5
6 root /var/www/your_domain/html;
7 index index.html index.htm index.nginx-debian.html;
8
9 server_name your_domain www.your_domain;
10
11 location / {
12 try_files $uri $uri/ =404;
13 }
14}
请注意,我们已将根
配置更新到我们的新目录,并将server_name
更新到我们的域名。
现在两个服务器块已启用并配置为基于其倾听
和服务器名称
指令响应请求(您可以阅读有关 Nginx 如何处理这些指令的更多信息):
your_domain
: 将响应对your_domain
和www.your_domain
的请求。默认
: 将响应任何不匹配其他两个区块的端口 80 的请求。
接下来,测试以确保您的任何 Nginx 文件中没有语法错误,使用nginx -t
:
1sudo nginx -t
如果没有任何问题,请重新启动 Nginx 以启用您的更改:
1sudo systemctl restart nginx
在您可以在浏览器中测试这些更改之前,您需要更新服务器的 SELinux安全环境,以便 Nginx 可以从 /var/www/your_domain
目录中提供内容。
此chcon
背景更新将允许您的自定义文档根作为 HTTP 内容:
1chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/
您可以通过导航到http://your_domain
,在那里您应该看到这样的东西:
结论
现在你已经安装了你的Web服务器,你有许多选择的内容类型来服务和你想要使用的技术来创建一个更丰富的体验。
要为您的域名设置HTTPS,使用免费的SSL证书使用 Let’s Encrypt,您应该继续到 How To Secure Nginx with Let’s Encrypt on Rocky Linux 9。