Ubuntu nginx 服务器上的子域名配置

Ubuntu nginx 服务器上的子域名配置

我有一个 2 核、2 GB RAM 的 VPS,带有 Digital Ocean 提供的专用 IP 地址,用于我的项目。我使用 nginx 作为 Web 服务器,使用 MySQL 作为数据库服务器,使用 bind 作为 DNS 服务器。

我的项目是一个用于教育目的的免费托管平台。我将向我家附近的学生教授 PHP 和 MySQL,并希望他们在自己的子域上练习 PHP 和 MySQL 支持。

例如,如果我的主域名是example.com,我还将为我的域名设置通配符 SSL,并且学生子域名应该是这样的student1.example.com

学生将能够使用我用 PHP 编写的安装脚本自动激活他们选择的子域名的网络空间。

如何在不使用任何 Web 管理控制面板的情况下实现我想要的功能?学生选择的任何子域名如何解析我的主域名?

学生可以在这样的设置上使用自己的 TLD 域名吗?

您对这种设置有什么建议吗?

答案1

不需要太多配置。

首先,使用通配符记录喜欢:

*.example.com 300 IN A MY.IP.AD.DR

然后你设置 Nginx 来匹配正则表达式服务器名称您可以根据用户名提供不同的文件夹。

server {
  listen 80;
  listen 443 ssl;

  server_name ~ ^(?<user>.+)\.example\.com$;

  ssl_certificate /path/to/cert;
  ssl_certificate_key /path/to/key;

  location / {
    # Set root directory depending on the domain name.
    root /var/www/$user;

    # Try to serve the file before calling PHP.
    try_files $uri $uri/ @proxy;
  }

  location @proxy {
    fastcgi_pass PHP.FPM.AD.DR:PORT;
  }
}

但请注意,您需要通配符 SSL 证书无论目标域名是什么,它都是有效的。

相关内容