有没有办法允许用户在 NGINX 中指定自己的每个站点配置?

有没有办法允许用户在 NGINX 中指定自己的每个站点配置?

我正在寻找一种方法来允许 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 权限。

相关内容