介绍
Nginx 是世界上最受欢迎的 Web 服务器之一,负责托管互联网上一些最大的和流量最高的网站,在大多数情况下比 Apache 更为资源友好,可以用作 Web 服务器或反向代理。
在本指南中,您将了解如何在 Ubuntu 18.04 服务器上安装 Nginx,以及有关重要的 Nginx 文件和目录。
前提条件
在您开始本指南之前,您应该有一个正常的非根用户,具有 sudo 权限和在您的服务器上配置的基本防火墙. 您可以通过遵循我们的 Ubuntu 18.04 初始服务器设置指南来学习如何配置常规用户帐户。
当你有一个帐户可用时,登录作为你的非根用户开始。
步骤1:安装 Nginx
由于Nginx在Ubuntu的默认存储库中可用,因此可以使用apt
包装系统从这些存储库中安装。
由于这可能是本会中的第一个与apt
包装系统的交互,请更新本地包索引,以便您可以访问最新的包装列表。
1sudo apt update
2sudo apt install nginx
接受此程序后,apt 将为您的服务器安装 Nginx 和任何所需的依赖。
第2步:调整防火墙
在测试 Nginx 之前,需要调整防火墙软件以允许访问该服务。
列出「ufw」知道如何使用的应用程序配置,键入以下内容:
1sudo ufw app list
您的输出应该是应用程序配置文件的列表:
1[secondary_label Output]
2Available applications:
3 Nginx Full
4 Nginx HTTP
5 Nginx HTTPS
6 OpenSSH
此列表显示了 Nginx 可用的三种配置文件:
- Nginx Full :此配置文件打开两个端口
80 (正常,未加密的网络流量) 和端口
443 (TLS/SSL 加密的流量) - Nginx HTTP :此配置文件只打开端口 `80 (正常,未加密的网络流量)
- Nginx HTTPS :此配置文件只打开端口
443
(TLS/SSL 加密的流量)
建议您启用最限制的配置文件,仍然允许您配置的流量. 由于您尚未为您的服务器配置SSL,在本指南中,您只需要在端口80上允许流量。
您可以通过键入以下内容来启用此功能:
1sudo ufw allow 'Nginx HTTP'
然后检查一下变化:
1sudo ufw status
您应该收到输出中允许的 HTTP 流量列表:
1[secondary_label Output]
2Status: active
3
4To Action From
5-- ------ ----
6OpenSSH ALLOW Anywhere
7Nginx HTTP ALLOW Anywhere
8OpenSSH (v6) ALLOW Anywhere (v6)
9Nginx HTTP (v6) ALLOW Anywhere (v6)
现在您已经添加了适当的防火墙规则,您可以检查您的 Web 服务器是否正在运行并能够正确地服务内容。
步骤三:检查您的Web服务器
在安装过程结束时,Ubuntu 18.04 启动了 Nginx. Web 服务器应该已经启动并运行。
检查systemd
init 系统,以确保该服务正在运行:
1systemctl status nginx
1[secondary_label Output]
2● nginx.service - A high performance web server and a reverse proxy server
3 Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
4 Active: active (running) since Fri 2021-10-01 21:36:15 UTC; 35s ago
5 Docs: man:nginx(8)
6 Main PID: 9039 (nginx)
7 Tasks: 2 (limit: 1151)
8 CGroup: /system.slice/nginx.service
9 ├─9039 nginx: master process /usr/sbin/nginx -g daemon on; master_pro
10 └─9041 nginx: worker process
这个输出显示,该服务已经成功启动,但是,测试这一点的最佳方法是实际上请求来自 Nginx 的页面。
您可以访问默认的 Nginx 定位页面,以确认软件运行正确,通过导航到您的服务器的 IP 地址. 如果您不知道您的服务器的 IP 地址,您可以通过几个不同的方式获得它。
尝试在您的服务器的命令提示中键入以下内容:
1ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
你会收到几行. 你可以尝试每个在你的网页浏览器,以确认他们是否工作。
另一种选择是运行以下命令,该命令应该生成您从互联网上的另一个位置识别的公共 IP 地址:
1curl -4 icanhazip.com
当您有您的服务器的IP地址时,请将其输入到您的浏览器的地址栏:
1http://your_server_ip
您应该收到默认的 Nginx 登陆页面:
此页面包含了 Nginx 来验证服务器是否正确运行。
第4步:管理 Nginx 流程
现在你有你的Web服务器运行,让我们审查一些基本的管理命令。
要停止您的 Web 服务器,请输入以下内容:
1sudo systemctl stop nginx
要在停止时启动 Web 服务器,请键入以下内容:
1sudo systemctl start nginx
要停止,然后重新启动服务,键入以下内容:
1sudo systemctl restart nginx
如果您只是在进行配置更改,您可以经常重新加载 Nginx,而不会放弃连接,而不是重新启动它。
1sudo systemctl reload nginx
默认情况下, Nginx 配置为在服务器启动时自动启动. 如果这不是你想要的,你可以通过键入以下方式禁用此行为:
1sudo systemctl disable nginx
要重新启用服务在启动时启动,您可以键入以下内容:
1sudo systemctl enable nginx
Nginx 现在应该在服务器重新启动时自动启动。
步骤 5 – 设置服务器封锁(推荐)
在使用 Nginx 网页服务器时,可使用 server block(类似于 Apache 中的虚拟主机)来封装配置细节,并从单个服务器中托管多个域。
Nginx 在 Ubuntu 18.04 上有一个默认启用的服务器块,可配置为在 `/var/www/html 中的目录中服务的文档。虽然这对单个网站来说很好,但如果您托管多个网站,它可能会变得不便。
创建 your_domain 的目录如下,使用-p
旗帜创建任何必要的母目录:
1sudo mkdir -p /var/www/your_domain/html
接下来,与$USER
环境变量分配目录的所有权:
1sudo chown -R $USER:$USER /var/www/your_domain/html
如果您尚未修改mask
值,您的 Web 根的权限应该是正确的,但您可以通过键入以下信息来确保:
1sudo chmod -R 755 /var/www/your_domain
接下来,使用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! The your_domain server block is working!</h1>
8 </body>
9</html>
如果您使用了nano
,您可以通过按CTRL + X
然后按Y
和ENTER
来退。
为了使 Nginx 能够提供此内容,需要创建一个正确的服务器块,而不是直接修改默认配置文件,请在 /etc/nginx/sites-available/your_domain
创建一个新的文件:
1sudo nano /etc/nginx/sites-available/your_domain
添加以下配置块,类似于默认,但更新为您的新目录和域名:
1[label /etc/nginx/sites-available/your_domain]
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.com www.your_domain;
10
11 location / {
12 try_files $uri $uri/ =404;
13 }
14}
请注意,我们已将根
配置更新到新目录中,并将server_name
更新到域名中。
接下来,通过从它创建一个链接到网站启用
目录, Nginx 在启动过程中读取:
1sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
现在两个服务器块已启用并配置为基于其倾听
和服务器名称
指令响应请求(您可以阅读有关 Nginx 如何处理这些指令的更多信息):
your_domain
: 将响应对your_domain
和www.your_domain
的请求。默认
: 将响应对不匹配其他两个区块的 `80' 端口上的任何请求。
为了避免可能导致添加额外的服务器名称的哈希库存问题,需要在 `/etc/nginx/nginx.conf 文件中调整单个值。
1sudo nano /etc/nginx/nginx.conf
查找server_names_hash_bucket_size
指令,然后删除#
符号以不评论行:
1[label /etc/nginx/nginx.conf]
2...
3http {
4 ...
5 server_names_hash_bucket_size 64;
6 ...
7}
8...
保存并关闭文件,当你完成。
接下来,测试以确保您的任何 Nginx 文件中没有语法错误:
1sudo nginx -t
如果没有任何问题,请重新启动 Nginx 以启用您的更改:
1sudo systemctl restart nginx
您可以通过导航到http://your_domain
,在那里您应该看到如下内容:
步骤 6 – 熟悉重要的 Nginx 文件和目录
现在你知道如何管理 Nginx 服务本身,你应该花几分钟来熟悉一些重要的目录和文件。
内容
/var/www/html
:实际的网页内容,默认情况下仅由您之前看到的默认 Nginx 页面组成,从/var/www/html
目录中提供。
服务器配置
/etc/nginx
: Nginx 配置目录. 所有 Nginx 配置文件都位于此处./etc/nginx/nginx.conf
: 主要的 Nginx 配置文件. 这可以被修改为对 Nginx 全球配置进行更改./etc/nginx/sites-available/
: 可以存储每个站点的服务器块的目录. Nginx 不会使用本目录中找到的配置文件,除非它们链接到sites-enabled
目录。 通常,所有服务器块配置都在本目录中进行,然后通过链接到其他目录启用。- `etc/nginx/sites-en
服务器日志
/var/log/nginx/access.log
:在这个日志文件中记录到您的 Web 服务器的每一个请求,除非 Nginx 已配置为另行。
结论
现在你已经安装了你的Web服务器,你有许多选择的内容类型来服务和你想要使用的技术来创建一个更丰富的体验。
如果您想构建一个更完整的应用程序堆栈,请参阅本文中的 如何在Ubuntu 18.04上配置LEMP堆栈。