介绍
Nginx是一个免费和开源的Web服务器,用于托管各种尺寸的网站和应用程序,该软件以其对内存资源的低影响,高可扩展性以及其模块化,事件驱动的架构而闻名,可以提供安全、可预测的性能。
在本指南中,您将在您的 Debian 10 服务器上安装 Nginx。
前提条件
在您开始本指南之前,您应该有一个正常的非根用户,在您的服务器上配置了 sudo 权限. 您也应该有一个活跃的防火墙. 您可以通过遵循我们的 Debian 10 的初始服务器设置指南来学习如何设置此设置。
步骤1:安装 Nginx
Nginx 可在 Debian 的默认软件存储库中使用,可以从传统的包管理工具中安装。
首先更新本地包索引以反映最新的上游变化:
1sudo apt update
然后,安装nginx
包:
1sudo apt install nginx
确认安装,输入Y
,然后按Enter
来继续。apt
将然后在您的服务器上安装 Nginx 和任何所需的依赖。
第2步:调整防火墙
在测试 Nginx 之前,需要修改防火墙设置以允许外部访问默认 Web 端口,假设您遵循前提中的指示,您应该有一个 UFW 防火墙配置来限制访问您的服务器。
在安装过程中, Nginx 会与 UFW 注册,以提供几个应用程序配置文件,可以用来通过防火墙启用或禁用对 Nginx 的访问。
列出ufw
应用程序配置文件,键入:
1sudo ufw app list
您应该获得应用程序配置文件的列表:
1[secondary_label Output]
2Available applications:
3...
4 Nginx Full
5 Nginx HTTP
6 Nginx HTTPS
7...
正如你所看到的, Nginx 有三种配置文件:
- Nginx Full :此配置文件打开两个端口
80 (正常,未加密的网络流量) 和端口
443 (TLS/SSL 加密的流量) - Nginx HTTP :此配置文件只打开端口 `80 (正常,未加密的网络流量)
- Nginx HTTPS :此配置文件只打开端口
443
(TLS/SSL 加密的流量)
建议您在本指南中启用最具限制性的配置文件,以便仍然允许您配置的流量. 由于您尚未为您的服务器配置 TLS/SSL,您只需要在端口 `80 上允许 HTTP 流量。
你可以通过键入来实现这一点:
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服务器
在安裝過程結束時,Debian 10 會啟動 Nginx. 網頁伺服器應該已經啟動並運行。
您可以通过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: enabled)
4 Active: active (running) since Tue 2022-06-28 18:42:58 UTC; 49s ago
5 Docs: man:nginx(8)
6 Main PID: 2729 (nginx)
7 Tasks: 2 (limit: 1167)
8 Memory: 7.2M
9 CGroup: /system.slice/nginx.service
10 ├─2729 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
11 └─2730 nginx: worker process
这个输出显示,该服务已经成功启动,但是,测试这一点的最佳方法是实际上请求 Nginx 的页面。
您可以访问默认的 Nginx 定位页面,通过导航到您的服务器的 IP 地址来确认软件是否正常运行. 如果您不知道您的服务器的 IP 地址,您可以在您的服务器的命令提示中输入此信息:
1ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
你会得到回来的几行. 你可以尝试每个在你的网页浏览器,看看他们是否工作。
当您有您的服务器的IP地址时,请将其输入到您的浏览器的地址栏:
1http://your_server_ip
默认的 Nginx 定位页面应该出现在您的 Web 浏览器中:
此页面包含了 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
步骤 5 – 设置服务器封锁(可选)
在使用 Nginx 网页服务器时,可使用 server block(类似于 Apache 中的虚拟主机)来封装配置细节,并在单个服务器上托管多个域名。
在 Debian 10 上, Nginx 有一个默认启用的服务器块,可配置为在 `/var/www/html 中的目录中提供文档。虽然这对单个网站非常有效,但如果您托管多个网站,它可能会变得无法管理。
用-p
旗创建your_domain
目录,以以下方式创建任何必要的母目录:
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! 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
,然后按ENTER
。
为了使 Nginx 能够提供此内容,您必须创建一个服务器块,其中有正确的指示指向您的自定义 Web 根,而不是直接修改默认配置文件,请在 /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 www.your_domain;
10
11 location / {
12 try_files $uri $uri/ =404;
13 }
14}
请注意更新root
配置到你的新目录和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
如果没有任何问题,以下是输出:
1[secondary_label Output]
2nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
3nginx: configuration file /etc/nginx/nginx.conf test is successful
通过配置测试后,重新启动 Nginx 以启用您的更改:
1sudo systemctl restart nginx
您可以通过导航到http://your_domain``来测试此功能。您在
/var/www/your_domain/html/index.html`文件夹中创建的自定义HTML应该在这里进行渲染:
步骤 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 服务器,您有许多选择,您可以提供的内容类型以及您可以使用的技术来为用户创造更丰富的体验。