Nginx 是一个开源 Web 服务器,擅长负载平衡、缓存和充当反向代理。NGINX 考虑了高效率和高并发性,旨在解决其他 Web 服务器的可扩展性和性能问题。它的事件驱动架构使其成为高可用性的 Web 服务器之一。
本文我们将介绍如何在 Ubuntu 20.04 LTS 上安装 Nginx 服务器和配置 Nginx 服务器块(虚拟主机)。
第 1 步 – 安装 Nginx
Nginx 在 Ubuntu 的默认存储库中可用,因此可以直接使用 apt
安装它。
我们首先更新本地安装包索引,以便可以获取最新的安装包清单。之后,执行命令安装nginx
:
sudo apt update
sudo apt install nginx
apt
将安装 Nginx 和所需的依赖项到服务器。
第 2 步 – 调整防火墙
在测试 Nginx 之前,需要调整防火墙软件以允许访问 Web 服务。Nginx 在安装时将自身注册为ufw
服务,从而可以直接允许 Nginx 访问。
通过键入以下命令,列出 Nginx
的应用程序配置:
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(正常、未加密的网络流量)
- Nginx HTTPS:此配置文件仅打开端口 443(TLS/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)
第 3 步 – 检查 Web 服务器
在安装过程结束后,Ubuntu 20.04 系统会启动 Nginx。通过执行以下命令,检查 systemd
init 系统以确保服务正在运行:
systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process
可以看到 Nginx 服务已成功启动。然而,最好通过实际访问页面,来验证 Nginx 正常提供服务。
可以访问默认的 Nginx 登录页面进行验证。通过导浏览器访问服务器的 IP 地址,来确认 Nginx 是否正常运行。如果您不知道服务器的 IP 地址,可以使用icanhazip.com工具查看,该工具将为您查询服务器的公共 IP 地址:
curl -4 icanhazip.com
获得服务器的 IP 地址后,输入浏览器的地址栏中进行访问:
http://your_server_ip
应该会收到如下的 Nginx 页面:
如果成功打开了该页面,则表明服务器运行正常。
第 4 步 – 管理 Nginx 进程
在成功启动并运行了 Nginx Web 服务器后,让我们了解一些基本的管理命令。
要停止 Nginx Web 服务器,请执行下面的命令:
sudo systemctl stop nginx
要在 Web 服务器停止时启动它,请执行下面的命令:
sudo systemctl start nginx
要重新启动 Nginx 服务,请执行下面的命令:
sudo systemctl restart nginx
如果对 Nginx 的配置文件做了更改,只要重新加载 Nginx 即可,这样不会断开 Web 连接。为此,请执行下面的命令:
sudo systemctl reload nginx
默认情况下,Nginx 被配置为在服务器启动时自动启动。如果您不想这样,可以通过执行下面的命令来禁用 Nginx 自动启动:
sudo systemctl disable nginx
要开启 Nginx 在系统重新启动时自动启动,可以执行下面的命令:
sudo systemctl enable nginx
在了解了 Nginx 的基本管理命令后,我们来介绍如何配置 Nginx 虚拟主机。
第 5 步 – 设置服务器块(虚拟主机)
使用 Nginx Web 服务器时,服务器块(类似于 Apache 中的虚拟主机)可用于配置单个服务器托管多个网站。
Ubuntu 20.04 上的 Nginx 默认启用了一个服务器块,配置/var/www/html
为网站根目录。如果服务器上只有单个站点,使用默认服务器块时可以的,但如果您想托管多个网站,这样就不那么方便了。下面,我们在/var/www/
下,为 your_domain 创建一个单独的根目录。
为 your_domain 创建根目录,使用-p
标志创建所需的父目录:
sudo mkdir -p /var/www/your_domain/html
接下来,授予 $USER
用户目录的所有权:
sudo chown -R $USER:$USER /var/www/your_domain/html
如果您没有修改umask
设置默认文件权限的值,则 Web 根目录的权限应该是正确的。为确保权限正确,要允许所有者读取、写入和执行文件,而只授予组和其他人读取和执行权限,请执行以下命令:
sudo chmod -R 755 /var/www/your_domain
接下来,使用编辑器创建示例index.html
页面:
sudo 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! The your_domain server block is working!</h1>
</body>
</html>
按Ctrl+X
保存并关闭文件,然后分别按Y
和Enter
。
为了让 Nginx 显示此页面内容,需要创建一个服务器块。在 /etc/nginx/sites-available/your_domain 目录下,创建一个新的服务器配置块:
sudo nano /etc/nginx/sites-available/your_domain
在配置块中粘贴下面的配置代码:
/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 www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
请注意,要将root
配置的目录和server_name
对应的域名更正为自己的。
接下来,我们通过创建一个指向 sites-enabled 目录的链接来启用该配置文件,Nginx 在启动期间会读取该目录:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
注意: Nginx 使用一种被称为符号链接做法来跟踪启用的服务器块。创建符号链接就像在硬盘上创建一个快捷方式。
现在启用并配置了两个服务器块,以根据它们的listen
和指令响应请求:
your_domain
: 将响应对 your_domain 和 www.your_domain 的请求。default
:将响应 80 端口上与其他两个块不匹配的请求。
为避免添加其他服务器名称可能导致的哈希桶内存问题,还要调整/etc/nginx/nginx.conf
配置文件:
sudo nano /etc/nginx/nginx.conf
找到server_names_hash_bucket_size
指令并删除前面#
号以取消注释该行。
/etc/nginx/nginx.conf
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
完成后保存并关闭文件。
接下来,测试所有 Nginx 文件中都没有语法错误:
sudo nginx -t
如果没有任何问题,重新启动 Nginx 以使更改生效:
sudo systemctl restart nginx
如果这时通过浏览器访问域名,应该会看到类似下面的内容。
第 6 步 – 熟悉 Nginx 配置文件和目录
在了解了如何管理 Nginx 服务后,我们再花几分钟时间熟悉一些重要的目录和文件。
网站目录
/var/www/html
:常用为网站的根目录,通常在服务器配置块中进行设置。
服务器配置
/etc/nginx
: Nginx 配置目录。所有 Nginx 配置文件都存放在此处。/etc/nginx/nginx.conf
: 主要的 Nginx 配置文件。可以对其进行修改以更改 Nginx 全局配置。/etc/nginx/sites-available/
:存储每个站点服务器块的目录。Nginx 不会使用在该目录中找到的配置文件,除非它们已经被链接到sites-enabled
目录。通常,所有服务器块配置都在此目录中完成,然后通过链接到sites-enabled
目录来启用。/etc/nginx/sites-enabled/
:存储已经启用的站点服务器块的目录。通常是通过链接到sites-available
目录中的配置文件来创建的。/etc/nginx/snippets
:此目录保存可以包含在 Nginx 配置中的配置片段。
服务器日志
/var/log/nginx/access.log
:对 Web 服务器的每个请求,都会记录在此日志文件中,除非 Nginx 配置不允许这样做。/var/log/nginx/error.log
: 任何 Nginx 错误都会记录在这个日志中。
总结
综上,牛奇网为您介绍了如何在 Ubuntu 20.04 上安装 Nginx Web 服务器。
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/how-to-install-nginx-on-ubuntu-20-04/