从 nginx 迁移到 Angie#
如果您正在从 nginx 切换到 Angie,恭喜您! 我们为您准备了一份指南。
请注意,本指南针对的是依赖 Angie 软件包版本的基本替换场景。
如果您使用的是 容器、
虚拟机、自定义路径或
模块,
您将需要进行额外的调整。 我们建议使用来自 我们仓库 的官方软件包;
请参阅适用于您的发行版的 Angie 安装步骤。
暂时不要启动服务器;
而是使用命令 sudo angie -V 检查它: 如上所示,
当从软件包安装 Angie 时,
配置 位于 Angie 通常只需要对现有 nginx 配置进行最小的更改。 将整个 nginx 配置复制到 我们假设 nginx 配置存储在 按照 Angie 的要求重命名主配置文件: 更新整个 Angie 配置中的路径,
从主配置文件开始。
具体细节取决于 nginx 的安装方式,
但至少需要更新以下内容。 任何仍然指向 PID 文件,这对 Angie 进程管理很重要: 如果使用 然后在 列出原始虚拟主机文件,例如: 注意它们的实际位置;
这里是 如果之前没有将它们复制到 最后,重新创建每个符号链接: 为 nginx 配置中引用的所有动态模块
查找并 安装 Angie 等效模块,
例如: 这意味着您需要安装 有两种常见的方式来包含动态模块配置: 如果通过 然后复制模块配置文件: 最后,在每个文件中更改 load_module 路径: 如果通过 然后在 列出原始模块配置文件,例如: 注意它们的实际位置;
这里是 将它们复制到 最后,重新创建每个符号链接: 如果 root 指向 复制目录并更新 Angie 配置中的 虽然保持 user 指令不变就足够了,
但您可以使用 Angie 账户以获得灵活性。 更新 Angie 配置中的 更改*所有*配置文件的所有者,
包括 如果 Angie 配置中有 root 指令,
更改其中指定目录的所有者,
例如: 为确保没有遗漏,
在 Angie 配置中查找并修复剩余的 更新 Angie 配置后,
下一步是检查其语法
以确保 Angie 可以使用它,
然后进行切换。
验证 Angie 接受新配置: 此命令解析配置
并报告会阻止 Angie 启动的错误;
修复任何问题并重新运行该命令。 为了最小化停机时间,在停止 nginx 后立即启动 Angie: 如果需要,启用 Angie 服务以在重启后自动启动: 迁移完成!就是这样;您真棒。 在确认 Angie 稳定运行后,
您可以禁用或删除 nginx 以避免冲突。 您至少可以禁用该服务: 如果您使用 Certbot 管理 nginx 的 SSL 证书,
它将继续与 Angie 一起工作。 在 Certbot 中支持 Angie 只需最少的工作,
因为 Angie 向后兼容 nginx。
要使 Certbot 工作,只需创建一个符号链接
并指定适当的参数: 迁移到 Angie 后,Certbot 将继续通过配置的 cron 作业或 systemd 定时器自动续订证书。 Angie 包含内置的 ACME 模块,
它允许您自动获取和续订 SSL 证书,
而无需使用 Certbot 等外部工具。 内置 ACME 模块的优势: 与 Angie 配置完全集成; 无需额外服务即可自动续订证书; 支持 HTTP 和 DNS 验证; 能够获取通配符证书。 有关从 Certbot 迁移到内置 ACME 模块的详细说明,
请参阅 从 certbot 迁移 部分。 可以肯定地说,您迁移是有原因的。
为什么不更进一步,配置一些 Angie 和 Angie PRO 中可用的附加功能,
这些功能在 nginx 中是没有的?安装 Angie#
$ sudo angie -V
Angie version: Angie/1.11.2
nginx version: nginx/1.29.3
built by gcc 11.4.0
configure arguments: --prefix=/etc/angie --conf-path=/etc/angie/angie.conf ...
/etc/angie/ 中。更新 Angie 配置#
/etc/angie/:$ sudo rsync -a --no-links /etc/nginx/ /etc/angie/
/etc/nginx/ 中;
如果您的路径不同,请调整这些步骤。$ sudo mv /etc/angie/nginx.conf /etc/angie/angie.conf
/etc/nginx/ 的 include 路径:# include /etc/nginx/conf.d/*.conf;
# include /etc/nginx/default.d/*.conf;
# include /etc/nginx/http.d/*.conf;
# include /etc/nginx/stream.d/*.conf;
include /etc/angie/conf.d/*.conf;
include /etc/angie/default.d/*.conf;
include /etc/angie/http.d/*.conf;
include /etc/angie/stream.d/*.conf;
# include /etc/nginx/sites-enabled/*;
include /etc/angie/sites-enabled/*;
# include /etc/nginx/modules-enabled/*;
include /etc/angie/modules-enabled/*;
# include /etc/nginx/mime.types;
include /etc/angie/mime.types;
# pid /var/run/nginx.pid;
# -- 或 --
# pid /run/nginx.pid;
pid /run/angie.pid;
# access_log /var/log/nginx/access.log;
access_log /var/log/angie/access.log;
# error_log /var/log/nginx/error.log;
error_log /var/log/angie/error.log;
虚拟主机#
sites-enabled/ 目录来包含虚拟主机,
也需要更新它:# include /etc/nginx/sites-enabled/*;
include /etc/angie/sites-enabled/*;
/etc/angie/sites-enabled/ 中重新创建符号链接
以使一切正常工作。$ ls -l /etc/nginx/sites-enabled/
default -> /etc/nginx/sites-available/default
/etc/nginx/sites-available/。/etc/angie/,
现在复制它们:$ sudo rsync -a /etc/nginx/sites-available/ /etc/angie/sites-available/
$ sudo ln -s /etc/angie/sites-available/default \
/etc/angie/sites-enabled/default
动态模块#
$ sudo nginx -T | grep load_module
load_module modules/ngx_http_geoip2_module.so;
load_module modules/ngx_stream_geoip2_module.so;
...
angie-module-geoip2 包,
依此类推。/usr/share/nginx/modules/ 包含动态模块,
更新路径:# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
# include /usr/share/nginx/modules/*.conf;
include /usr/share/angie/modules/*.conf;
$ sudo rsync -a /usr/share/nginx/modules/ /usr/share/angie/modules/
# load_module "/usr/lib64/nginx/modules/ngx_http_geoip2_module.so";
load_module "/usr/lib64/angie/modules/ngx_http_geoip2_module.so";
/etc/nginx/modules-enabled/ 包含动态模块,
更新路径:# include /etc/nginx/modules-enabled/*.conf;
include /etc/angie/modules-enabled/*.conf;
/etc/angie/modules-enabled/ 中重新创建符号链接
以使一切正常工作。$ ls -l /etc/nginx/modules-enabled/
mod-http-geoip2.conf -> /usr/share/nginx/modules-available/mod-http-geoip2.conf
/usr/share/nginx/modules-available/。/usr/share/angie/:$ sudo rsync -a /usr/share/nginx/modules-available/ /usr/share/angie/modules-available/
$ sudo ln -s /usr/share/angie/modules-available/mod-http-geoip2.conf \
/etc/angie/modules-enabled/mod-http-geoip2.conf
根目录(可选)#
/usr/share/nginx/html/ 目录,
您可以更改该指令以指向 Angie。root 值:$ sudo rsync -a /usr/share/nginx/html/ /usr/share/angie/html/
# root /usr/share/nginx/html;
root /usr/share/angie/html;
用户和组(可选)#
user 设置:# user www-data www-data;
user angie angie;
/usr/share/angie/ 中的文件,
例如:$ sudo chown -R angie:angie /etc/angie/
$ sudo chown -R angie:angie /usr/share/angie/
$ sudo chown -R angie:angie /var/www/html/
收尾工作#
nginx 引用:$ grep -rn --include='*.conf' 'nginx' /etc/angie/
测试和切换#
$ sudo angie -t
停止 nginx,启动 Angie#
$ sudo systemctl stop nginx && sudo systemctl start angie
$ sudo systemctl enable angie
禁用 nginx#
$ sudo systemctl disable nginx
使用 SSL 证书#
在 Angie 中使用 Certbot#
# 创建符号链接以实现 Certbot 兼容性
$ sudo ln -s /etc/angie/angie.conf /etc/angie/nginx.conf
# 为域名获取证书
$ sudo certbot --nginx --nginx-server-root=/etc/angie --nginx-ctl=angie -d example.com -d www.example.com
# 自动续订证书
$ sudo certbot renew
# 检查证书状态
$ sudo certbot certificates
从 Certbot 迁移到内置 ACME 模块#
配置 Angie 功能#