介绍
Nginx是全球最流行的Web服务器之一,托管着互联网上一些规模最大、访问量最高的网站。在大多数情况下,它比Apache更节省资源,既可以用作Web服务器,也可以用作反向代理。.
在本指南中,您将学习如何在 Ubuntu 18.04 服务器上安装 Nginx,以及重要的 Nginx 文件和目录。.
先决条件
在开始本指南之前,您需要在服务器上配置一个具有 sudo 权限的普通用户(非 root 用户)和一个基本的防火墙。您可以参考我们的 Ubuntu 18.04 服务器基本设置指南,了解如何配置普通用户帐户。.
注册账号后,以非root用户身份登录即可开始使用。.
步骤 1 – 安装 Nginx
由于 Nginx 在 Ubuntu 的默认软件仓库中可用,因此可以使用 apt 软件包管理系统从这些软件仓库安装它。.
由于这可能是您本次会话中首次与 apt 软件包系统交互,请刷新本地软件包目录以获取最新的软件包列表。之后,您可以安装 nginx:
sudo apt update
sudo apt install nginx接受此操作后,apt 将会在您的服务器上安装 Nginx 及所有必需的依赖项。.
步骤 2 – 配置防火墙
在测试 Nginx 之前,必须配置防火墙软件以允许访问该服务。安装完成后,Nginx 会将自身注册为 ufw 的服务,从而可以轻松允许对 Nginx 的访问。.
输入以下命令,列出ufw能够支持的应用程序配置:
sudo ufw app list输出结果应为应用程序配置文件列表:
Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH此列表显示了 Nginx 可用的三种配置文件:
- Nginx Full:此配置文件同时打开端口 80(普通、未加密的 Web 流量)和端口 443(TLS/SSL 加密流量)。.
- Nginx HTTP:此配置文件仅开放端口 80(普通、未加密的 Web 流量)
- Nginx HTTPS:此配置文件仅开放端口 443(TLS/SSL 加密流量)
建议您启用限制最严格的配置文件,但仍需允许您配置的流量。由于本指南中尚未为您的服务器配置 SSL,因此您只需允许 80 端口的流量即可。.
您可以通过输入以下命令来启用此功能:
sudo ufw allow 'Nginx HTTP'然后,确认更改:
sudo ufw status您应该在输出中看到允许的 HTTP 流量列表:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)现在您已经添加了相应的防火墙规则,可以检查您的 Web 服务器是否正在运行并能正常提供内容。.
步骤 3 – 检查您的 Web 服务器
安装过程结束后,Ubuntu 18.04 将启动 Nginx。Web 服务器应该已经启动。.
检查 systemd init 命令以确保服务正在运行:
systemctl status nginxOutput
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
Active: active (running) since Fri 2021-10-01 21:36:15 UTC; 35s ago
Docs: man:nginx(8)
Main PID: 9039 (nginx)
Tasks: 2 (limit: 1151)
CGroup: /system.slice/nginx.service
├─9039 nginx: master process /usr/sbin/nginx -g daemon on; master_pro
└─9041 nginx: worker process此输出表明服务已成功启动。但是,最佳测试方法是实际向 Nginx 请求一个页面。.
您可以通过访问服务器的 IP 地址来查看 Nginx 的默认登录页面,以验证软件是否正常运行。如果您不知道服务器的 IP 地址,可以通过几种不同的方式获取。.
请尝试在服务器命令行中输入以下命令:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'你会看到几行代码。你可以逐一在浏览器中尝试,看看它们是否有效。.
另一种方法是运行以下命令,该命令会创建您的公共 IP 地址,以便从互联网上的其他位置识别该地址:
curl -4 icanhazip.com获取服务器的IP地址后,将其输入到浏览器的地址栏中:
http://your_server_ip您应该会看到 Nginx 的默认登录页面:
此页面随 Nginx 一起提供,用于验证服务器是否正常运行。.
步骤 4 – 管理 Nginx 进程
现在您的 Web 服务器已经设置完毕,让我们来回顾一些基本的管理命令。.
要停止您的 Web 服务器,请键入以下命令:
sudo systemctl stop nginx如果 Web 服务器停止运行,要启动它,请键入以下命令:
sudo systemctl start nginx要停止并重新启动服务,请键入以下命令:
sudo systemctl restart nginx如果您只是进行配置更改,通常可以在不断开连接的情况下重新加载 Nginx,而无需重启服务。为此,请键入以下命令:
sudo systemctl reload nginx默认情况下,Nginx 配置为在服务器启动时自动启动。如果您不希望这样做,可以通过输入以下命令禁用此功能:
sudo systemctl disable nginx
要重新启用该服务开机启动,您可以输入以下命令:
sudo systemctl enable nginx
现在服务器启动时,Nginx 应该会自动重启。.
步骤 5 – 设置服务器块(推荐)
使用 Nginx Web 服务器时,可以使用服务器块(类似于 Apache 中的虚拟主机)来封装配置详情,并从单个服务器托管多个域名。我们将设置一个名为 your_domain 的域名,但您应该将其替换为您自己的域名。有关使用 DigitalOcean 设置域名的更多信息,请参阅我们的 DigitalOcean DNS 简介。.
Ubuntu 18.04 中的 Nginx 默认启用了一个服务器块,该服务器块配置为提供 /var/www/html 目录之外的文档。虽然这对于单个网站来说运行良好,但如果您托管多个网站,则会变得很麻烦。与其修改 /var/www/html,不如在 /var/www 中为您的 your_domain 网站创建一个目录结构,并将 /var/www/html 保留为默认目录,以便在它与客户端请求不匹配时提供服务。其他网站
按如下方式为 your_domain 创建目录,并使用 -p 标志创建任何必要的父目录:
sudo mkdir -p /var/www/your_domain/html
接下来,使用 $USER 环境变量指定目录的所有权:
sudo chown -R $USER:$USER /var/www/your_domain/html
如果您没有更改 umask 值,则您的网站根权限应该是正确的,但您可以通过输入以下命令进行确认:
sudo chmod -R 755 /var/www/your_domain
接下来,使用 nano 或你喜欢的编辑器创建一个示例 index.html 页面:
nano /var/www/your_domain/html/index.html
在代码块内,添加以下 HTML 示例:
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>完成后保存并关闭文件。如果您使用的是 nano 编辑器,可以按 CTRL + X,然后按 Y,最后按 ENTER 键退出。.
为了让 Nginx 提供此内容,您需要创建一个包含正确指令的服务器块。请不要直接修改默认配置文件,而是在 /etc/nginx/sites-available/your_domain 目录下创建一个新文件:
sudo nano /etc/nginx/sites-available/your_domain
添加以下配置块,该配置块与默认配置块类似,但已根据您的新目录和域名进行更新:
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain.com www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}请注意,我们已将根配置更新到新目录,并将 server_name 更新为域名。完成后,请保存并关闭文件。.
然后,通过从该文件创建指向 sites-enabled 目录的链接来启用该文件,Nginx 启动时将从该目录读取数据:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
现在已启用并配置了两个服务器块,以根据 listen 和 server_name 指令响应请求(您可以在此处阅读更多有关 Nginx 如何处理这些指令的信息):
- your_domain:响应对 your_domain 和 www.your_domain 的请求。.
- 默认值:响应端口 80 上任何不与其他两个块匹配的请求。.
为避免因添加额外服务器名称而可能导致的哈希桶内存问题,需要在 /etc/nginx/nginx.conf 文件中设置一个值。打开该文件:
sudo nano /etc/nginx/nginx.conf
找到 server_names_hash_bucket_size 命令,删除 # 符号以取消注释该行:
...
http {
...
server_names_hash_bucket_size 64;
...
}
...完成后保存并关闭文件。.
接下来,测试以确保所有 Nginx 文件中都没有语法错误:
sudo nginx -t
如果没有问题,请重启 Nginx 以使更改生效:
sudo systemctl restart nginx
Nginx 现在应该可以正常访问您的域名了。您可以访问 http://your_domain 进行测试,应该会看到类似以下内容:
步骤 6 – 熟悉重要的 Nginx 文件和目录
既然您已经了解如何管理 Nginx 服务本身,您应该花几分钟时间熟悉一些重要的目录和文件。.
内容
- /var/www/html:实际的网页内容(默认情况下仅包含您之前看到的 Nginx 默认页面)位于 /var/www/html 目录之外。您可以通过编辑 Nginx 配置文件来更改此设置。.
服务器配置
- /etc/nginx:Nginx 配置目录。所有 Nginx 配置文件都位于此处。.
- /etc/nginx/nginx.conf:Nginx 的主配置文件。可以编辑此文件来更改 Nginx 的全局配置。.
- /etc/nginx/sites-available/:用于存储每个站点的服务器块的目录。除非链接到 sites-enabled 目录,否则 Nginx 不会使用此目录中的配置文件。通常,所有服务器块配置都在此目录中完成,然后通过链接到另一个目录来启用。.
- /etc/nginx/sites-enabled/:此目录存储为每个站点启用的服务器块。通常,这些目录是通过链接到现有站点目录中的配置文件创建的。.
- /etc/nginx/snippets:此目录包含可包含在 Nginx 配置其他位置的配置片段。可能需要重复使用的配置部分非常适合重新转换为代码片段。.
服务器报告
- /var/log/nginx/access.log:除非 Nginx 另有配置,否则发送到 Web 服务器的每个请求都会记录在此日志文件中。.
- /var/log/nginx/error.log:所有 Nginx 错误都会记录在此日志文件中。.
结果
现在您的网络服务器已经安装完毕,您可以选择多种内容类型和技术来创建更丰富的用户体验。.











