我正在寻找一种方法来允许 Debian 系统上的用户配置自己的 NGINX 站点。以下配置是否可行?
http {
# ...
server {
server_name www.alicesite.com;
location / {
include /home/alice/nginx.conf;
}
}
server {
server_name www.bobsite.com;
location / {
include /home/bob/nginx.conf;
}
}
# etc.
}
或者它的某些变体?
答案1
是的。但由于一些已经提到的问题,您必须编写脚本并修改 Nginx 周围的 sudo 配置。
Debian/Ubuntu 类型的 Web 服务器配置与主 Nginx 配置文件 (/etc/nginx/nginx.conf) 一起工作,并且虚拟 Web 服务器配置将通过包含目录 /etc/nginx/sites-enabled 的所有文件来处理。
还有其他包含内容,但我想重点关注 /etc/nginx/sites-enabled/*,其中一个文件代表一个虚拟 Web 服务器(例如 www.bobsite.com)。
对于我们的 Web 项目,我们将 Web 服务器配置文件存储在项目文件夹中(例如 /var/www/project-bob/cfg/srv/nginx/sites-enabled/www.bobsite.com.conf),并在文件夹 /etc/ngix/sites-enabled 中创建符号链接(例如 /etc/nginx/sites-enabled/www.bobsite.com.conf)。
设置符号链接后,我们使用 Nginx 运行干配置测试(nginx -t),如果没有失败,我们将重新加载 Nginx(service nginx reload)。如果测试失败,我们将删除符号链接并向项目部署接口发出异常响应。
由于所有这些都需要 root 权限,我们创建了一个 sudoers 配置文件(参见 /etc/sudoers.d)来向部署接口授予有限的 sudo 权限。