介绍 MySQL 是一个开源关系数据库管理系统 (RDBMS…
8. 如何在Debian 12上安装Nginx Web服务器
介绍
Nginx 是一款开源的高性能 Web 服务器,还可用作后端应用程序的反向代理和负载均衡器。Nginx 与 Python、Golang 和 PHP 等现代服务器端脚本语言集成,以运行动态数据驱动的 Web 应用程序。
本文介绍如何在 Debian 12 上安装 Nginx、设置虚拟主机以及使用 Let’s Encrypt 保护 Web 服务器。
先决条件
开始之前:
- 在 Vultr 上部署 Debian 12 实例。
- 通过 SSH 访问实例。
- 创建具有权限的非root用户
sudo
。 - 创建一个具有指向您服务器 IP 的 A 记录的域或子域。例如,
app.example.com
。 - 更新实例。
安装 Nginx
Nginx 在 Debian 12 的默认软件包存储库中可用。按照以下步骤更新服务器软件包索引并使用 APT 包管理器安装 Nginx。
- 更新服务器的包信息索引。
$ sudo apt 更新
- 安装 Nginx。
$ sudo apt install nginx -y
- 允许 HTTP 端口
80
通过防火墙。$ sudo ufw 允许80 /tcp
- 重新加载 UFW 以应用防火墙更改。
$ sudo ufw 重新加载
- 使用 Chrome 等网络浏览器访问您服务器的公共 IP 地址,以测试对默认 Nginx 欢迎页面的访问。
http://SERVER-IP
如何在debian 12上安装nginx Web服务器
管理Nginx系统服务
Nginx 使用nginx
systemd 服务配置文件来管理 Web 服务器应用程序进程。请按照以下步骤使用 来管理服务systemctl
。
- 启用 Nginx 服务在启动时自动启动。
$ sudo systemctl启用nginx
输出:
Synchronizing state of nginx.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable nginx Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /lib/systemd/system/nginx.service.
- 启动 Nginx 服务。
$ sudo systemctl 启动 nginx
- 查看 Nginx 服务状态并验证其正在运行。
$ sudo systemctl 状态 nginx
输出:
● nginx.service - A high performance webserver and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled) Active: active (running) since Sat 2024-08-24 07:00:58 UTC; 1min 35s ago Docs: man:nginx(8) Process: 2560 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 2561 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 2584 (nginx) Tasks: 2 (limit: 1091) Memory: 1.7M CPU: 12ms CGroup: /system.slice/nginx.service ├─2584 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" └─2585 "nginx: worker process"
- 停止 Nginx 服务。
$ sudo systemctl 停止 nginx
- 重新启动 Nginx 服务。
$ sudo systemctl 重启 nginx
创建新的Nginx虚拟主机
Nginx 虚拟主机配置使 Web 服务器能够在单个服务器上托管多个网站。虚拟主机配置由多个指令组成,这些指令定义特定域名的根目录、服务器名称、错误文件和索引页。请按照以下步骤创建新的 Nginx 虚拟主机。
- 创建一个新的 Nginx 虚拟主机配置文件。例如,
app.example.com.conf
。$ sudo touch /etc/nginx/conf.d/app.example.com.conf
- 使用文本编辑器(如)打开文件
nano
。$ sudo nano /etc/nginx/conf.d/app.example.com.conf
- 将以下内容添加到文件中。替换
app.example.com
为您的实际域名。服务器{监听80 ;监听[::]:80 ;服务器名称app.example.com ; 根/var/www/html/app.example.com ;索引index.html ; 位置/ { try_files $uri $uri/ = 404 ; } }
保存并关闭文件。
上述 Nginx 配置创建了一个新的虚拟主机,用于监听
app.example.com
域的传入连接并从目录中提供 Web 应用程序文件/var/www/html/app.example.com
。 - 创建虚拟主机的Web根目录。
$ sudo mkdir -p /var/www/html/app.example.com
index.html
在目录中创建一个新的Web 应用程序文件。$ sudo nano /var/www/html/app.example.com/index.html
- 在文件中添加以下内容。
< html > < head ></ head > < body > < h1 >来自 Vultr 的问候</ h1 > </ body > </ html >
保存并关闭文件。
Greetings from Vultr
当您在 Web 浏览器中访问上述 HTML Web 应用程序时,它会显示一条消息。 - 授予
www-data
Web 服务器用户和组对该/var/www/html/app.example.com
目录的所有权权限。$ sudo chown -R www-data:www-data /var/www/html/app.example.com
- 测试 Nginx 配置是否有错误。
$ sudo nginx -t
输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
- 重新启动 Nginx 服务以应用更改。
$ sudo systemctl 重启 nginx
- 在 Web 浏览器上访问您的域并验证您的 Web 应用程序是否显示。
http://app.example.com
保护 Nginx Web 服务器
Nginx 在端口 上监听传入的 HTTP 连接80
。要通过 HTTP 端口 保护 Nginx 虚拟主机的安全443
,您必须安装受信任的 SSL 证书。请按照以下步骤安装 Let’s Encrypt SSL 证书。
- 安装 Certbot Let’s Encrypt 客户端工具和 Nginx 插件。
$ sudo apt install python3-certbot-nginx certbot -y
- 为虚拟主机生成新的 SSL 证书。将其替换
app.example.com
为您的实际虚拟主机域名和hello@example.com
您的有效电子邮件地址。$ sudo certbot --nginx -d app.example.com -m hello@example.com --agree-tos
- 确保 Certbot 可以更新 SSL 证书。
$ sudo certbot renew --dry-run
- 重新启动 Nginx 以应用配置更改。
$ sudo systemctl 重启 nginx
设置防火墙规则
简单防火墙 (UFW) 默认在 Vultr Debian 实例上可用且处于活动状态。请按照以下步骤允许 HTTP 和 HTTPS 端口通过防火墙。
- 查看 UFW 状态并验证其是否处于活动状态。
$ sudo ufw 状态
- 允许 HTTP 端口
80
通过防火墙。$ sudo ufw 允许80 /tcp
- 允许 HTTPS 端口
443
通过防火墙。$ sudo ufw 允许443 /tcp
- 查看 UFW 状态并验证新的连接规则是否可用。
$ sudo ufw 状态 编号
输出:
Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] 80/tcp ALLOW IN Anywhere [ 3] 443/tcp ALLOW IN Anywhere [ 4] 22/tcp (v6) ALLOW IN Anywhere (v6) [ 5] 80/tcp (v6) ALLOW IN Anywhere (v6) [ 6] 443/tcp (v6) ALLOW IN Anywhere (v6)
- 使用 HTTPS 访问您的虚拟主机域并验证您的 Web 应用程序是否显示。
https://app.example.com
结论
您已在 Debian 12 上安装了 Nginx,设置了新的虚拟主机,并安装了 Let’s Encrypt 证书。Nginx 可用作 Web 服务器、负载均衡器或反向代理。有关更多信息,请访问Nginx 文档。