我有一个 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 证书无论目标域名是什么,它都是有效的。